Userform ve Nesneleri, Hücre Başvurusuyla Renklendirme


Excel Userformlarımızı ve üzerindeki nesneleri, çalışma sayfamızda kullandığımız ÅŸablon renklerine uygun bir ÅŸekilde düzenlemek isteyebiliriz. Userformumuzun renklerini, belirlediÄŸimiz hücrelere doldurduÄŸumuz renklerden alıyor olacak. Excel hücre rengi deÄŸiÅŸince otomatik olarak userformumuz ve üzerindeki nesneler de hızlı bir ÅŸekilde çalışma sayfamızla uyumlu renk paletiyle boyanacaktır... Alttaki Kodları Userformumuzun Initialize bölümüne yapıştırın ve formumuzun referans alacağı hücreleri renklerle doldurun. Alttaki Userform hücre baÅŸvurularını kendi sayfa ve hücrelerinize göre düzenlemeyi unutmayın... Esen Kalın... 
 Private Sub UserForm_Initialize()

Dim nesne As Control
For Each nesne In Me.Controls
If TypeName(nesne) = "TextBox" Then nesne.BackColor = Sheets("bilgiler").Range("l5").Interior.Color
If TypeName(nesne) = "Frame" Then nesne.BackColor = Sheets("bilgiler").Range("l4").Interior.Color
If TypeName(nesne) = "CommandButton" Then nesne.BackColor = Sheets("bilgiler").Range("l4").Interior.Color
Next
Me.BackColor = Sheets("bilgiler").Range("l4").Interior.Color

End Sub


Excel Hücreye Çift Tıklayınca Onay (Check) İşareti Koyma

Merhaba Excel Dostları. 

Excel Hücrelerine çift tıklayınca onay (check) işareti nasıl yazdırabiliriz?...
 
Ä°leri seviye excel kullanıcıları bu tarz kısa yollara ihtiyaç duyar ve tablolarının etkileÅŸim içerisinde daha dinamik olmasını isterler... :] 
 
Bu cümle içerisinde bir nümayiÅŸ var sanırım... 
 
Ben de bu tarz iÅŸlevsel kısa yollara ihtiyaç duyduÄŸuma göre, ileri seviye excel kullanıcısı oluduÄŸumu söyledim... 
 
Evet... 
 

Ä°nsan bazen olduÄŸundan ziyade olmak istediÄŸi konumlardan lakırdılar sarfedebiliyor... Ne diyelim? Ä°nsanlık! :] 

 
Konuya dağıtmadan, belirli bir alıkta bulunan excel hücrelerine çift tıklayınca hücreye onay iÅŸareti yazdıracağız... 
 

Yapmamız Gerekenler; 

 
1- Kutuların içindeki yazı tipi Marlett  (alttaki kod otomatik seçim yaptırıyoruz... )

2- Klavye tuÅŸu a 
 
3- ilgili sayfanın kod bölümüne alttaki kodu yazıyoruz ve hücre aralıklarını kendi uygulamamıza göre yeniden yazıyoruz... Hepsi Bu kadar sevgili excel dostlarım... Sağlıcakla kalınız...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Cells.Count > 1 Then Exit Sub 'Count kelimesinin Türkçe karşılığı saymak demektir
 Application.EditDirectlyInCell = True 'Hücreye çift tıklayınca veri girmeyi serbest bırak
' Target hedef demektir. Sayfa olaylarında kullanılan bir değişkendir. Yerine istediğiniz kelimeyi yazabilirsiniz
    If Not Intersect(Target, Range("K19:P119")) Is Nothing Then 'Intersect(Aktif_Hücre, Hedef_Aralık)
    ' Intersect komutu  kesişme anlamına gelmektedir.
Application.EditDirectlyInCell = False 'Hücreye çift tıklayınca veri girmeyi iptal et
        Target.Font.Name = "Marlett"
        If Target = vbNullString Then 'Bir değişken veri içermiyorsa bu değişken Null değere sahiptir diyebiliriz.
            Target = "a" 'çift tıklayınca hücreye a harfinin marlett yazı tipi olarak karşılığı onay işaretidir
        Else
            Target = vbNullString 'Stringler (metinler)
          End If
    End If
End Sub

Dikkat!
Birden fazla sütuna başvuru yaparak onay işareti yazdırmak istiyorsanız üstteki kodlarda ilgili bölümde, alttaki gibi yeniden düzenleme yapabilirsiniz...
    If Not Intersect(Target, Range("f6:f297, j6:j297, N6:N297")) Is Nothing Then 'Intersect(Aktif_Hücre, Hedef_Aralık) 
Örnek Excel dosyasını indirmek için tıklayınız...

With end with ifadelerinin nesne veya koleksiyonlarla kullanılması


VBA With ifadeleri, aynı nesne veya koleksiyonla ilgili karmaşık kodları basitleÅŸtirmenizi saÄŸlar. Sürekli olarak aynı nesneye gönderme yapmak yerine, bu nesneyi belirleyerek üzerinde bir dizi eylem gerçekleÅŸtirmek için bir With… End With ifadesi kullanabilirsiniz. Ortaya çıkan kodun okunması daha kolay olduÄŸu gibi, aynı zamamanda daha da hızlı çalışır. Bir with ifadesinin söz dizimi aÅŸağıdaki gibidir:

With object
 Olaylar (kodlar)
Ent with
Buradaki object, bir koleksiyonda dahil olmak üzere herhangi bir nesne olabilir. Örnek olarak bir pargrafın etkin biçemini, farklı bir biçem uygulamadan biraz süslemek için bir paragrafa uygulamak isteyebileceğiniz bir biçimlendirmeyi ele alalım. Diyelim ki farklı bir font daha büyük bir punto ve alt çizgisiz yazı karakterli uygulamaya, ancak paragrafın hala heading 1 biçemi ile belirlenmesine karar verdiğiniz. Bu biçimlendirmeyi ona aşağıdaki üç ifadeyle uygulayabirizsiniz:

Selection.Font.Name =”Arial Black”
Selection.Font.Size = 24
Selection.Font.Underline = wdUnderlineNone


Altenatif olarak bu kodu basitleştirmek için bir with ifadesi de kullanabilirsiniz.

With selection.Font
 .Name=”Arial Black”
.Size =24
.Underline = wdUnderlineNone
End with


Buradaki with ifadesi ile End with ifadesi arasındaki bütün ifadeler with ifadesi ile tanımlanan selection.font nesnesi için geçerlidir. Benzer bir biçimde, etkin seçime pragraf biçimlendirmesi uygulamak içinde bir with ifadesi kullanabilirsizin. Aşağıdaki ifadeler paragraf öncesi boşluğu, punto. Sonrası boşluğu da 12 punto yapar

With selection.ParagraphFormat
 .spaceBefore = 0
 .SpaceAfter=12
End with


Burada with ifadesi ile End with ifadesi arasındaki bütün ifadeler selection.ParagraphFormat nesnesi için geçerlidir. Aynı zamanda bu iki with ifadesini, her ikisinde de ortak olan Selection. Nesnesini kullanarak aşağıdaki şekilde birleştirebilirsizin:

With selection
 .Font.Name = “Arial Balack”
 .Font.Size = 25
 .Font.Underline= wdUnderlineNone
.ParagraphFormat
 .spaceBefore= 0
 .spaceAfetr= 12
End with


Ayrıca aşağıdaki örnekte olduğu gibi with ifadelerini iç içe de geçirebilirsiniz. Bu örnekte iç içe geçirmenin kullanılması (düzgün çalışsa da) şart değildir ama başka durumlarda onu gerekli bulabilirsiniz.

With selection
 .Font.Name = “Arial Balack”
 .Font.Size = 25
 .Font.Underline= wdUnderlineNone
End with


With.ParagraphFormat
 .spaceBefore= 0
 .spaceAfetr= 12
End with
End with

İPUCU: VBA kullanmayı öğrenirken bir with ifadesi oluşturmanın en kolay yolu, makro kaydediciyi üzerinde çalışmak istediğiniz nesnelere erişim yöntemini ve üzerlerinde gerçekleştiriğiniz eylemleri kaydetmek için kullanmaktır. Bunu yaptıktan sonra kodu visual Basic Editörde düzenleyin ve bu eylemleri gerçekleştirmek için kaydedilmiş olan kodun daha basit bir sürümünü kullanan with ifadesi oluşturun.

TextBox Özellikleri

‘TextBox’a en sondaki hücre deÄŸerinin yazdırılması
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()

txtLastValue.Text = Cells( _
Cells(Rows.Count, 1).End(xlUp).Row, 1).Text
End Sub
‘Textbox taki satırlara ayrılmış verileri hücrelere yazdırır
Option Explicit

Private Sub cmdEintragen_Click()

Dim iRow As Integer
Dim sTxt As String
sTxt = txtText.Text
sTxt = WorksheetFunction.Substitute(sTxt, vbLf, "")
Do
iRow = iRow + 1
If InStr(sTxt, vbCr) Then
Cells(iRow, 1).Value = Left(sTxt, InStr(sTxt, vbCr) - 1)
sTxt = Right(sTxt, Len(sTxt) - InStr(sTxt, vbCr))
Else
Cells(iRow, 1).Value = sTxt
Exit Do
End If
Loop
Unload Me
End Sub
Private Sub UserForm_Initialize()
txtText.Text = _
"A.Aşkın KÜÇÜKKAYA" & vbCr & _
"KabataÅŸ Ordu" & vbCr & _
"52520" & vbCr & _
"http://www.kod.gen.tr" & vbCr & _
"Excel Ötesi" & vbCr & _
"askinkk@kod.gen.tr"
cmdEintragen.SetFocus
End Sub
‘Textbox’a sadece rakam girebilirsiniz
Private Sub txtNumber_Change()

Dim sTxt As String
sTxt = txtNumber.Text
If sTxt = "" Then Exit Sub
If Right(sTxt, 1) Like "[0-9]" = False Then
txtNumber.Text = Left(sTxt, Len(sTxt) - 1)
End If
End Sub
‘Textboxsa 0 ile 9 arasında rakam girebilirsiniz.
Private Sub TextBox1_KeyPress _
(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr(1, "0123456789", Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End Sub
'TextBox kutularına 1 den 5'e kadar sayı atar
Private Sub UserForm_Initialize()

Dim iCounter As Integer
For iCounter = 1 To 5
Controls("txt" & iCounter).Text = iCounter
Next iCounter
End Sub
'Textbox a yazılan yazı aynı anda hücreye yazılır
Private Sub txtEdit_Change()

Range("A1").Value = txtEdit.Text
End Sub
'A1 hücre değerinin textbox a alınması
Private Sub UserForm_Initialize()

txtEdit.Text = Range("A1").Value
End Sub
'TextBox a sadece tarih girebilirsiniz, Tarihi 31122005 şeklinde yazınca 31.12.2005 şeklinde biçimlendirir
Private Sub txtDate_Change()

Dim sDate As String
sDate = txtDate.Text
If sDate = "" Then Exit Sub
If Not Right(sDate, 1) Like "[0-9]" Then
sDate = Left(sDate, Len(sDate) - 1)
txtDate.Text = sDate
End If
If Len(sDate) = 6 Then
sDate = Format(DateSerial( _
"20" & Right(sDate, 2), _
Mid(sDate, 3, 2), _
Left(sDate, 2) _
), "dd.mm.yy")
txtDate.Text = sDate
End If
End Sub
'textboxtaki istenilen kelimeleri seçer, Örneğin 01.02.2005 tarihindeki ayı seçtirmek istiyorsanız bu kodu çalıştırmanız yeterli
Private Sub cmdFirst_Click()

With txtFirst
.SetFocus
.SelStart = 3 '3. karekterden baÅŸlar
.SelLength = 2 '2 karekter seç
End With
End Sub
'user form açılırken textbox'a istediğiniz formatta tarih yazdırır.
Private Sub UserForm_Initialize()

txtFirst.Text = Format( _
DateSerial(Year(Date), Month(Date), 12), "dd.mm.yyyy")
End Sub
'Textbox taki veriyi userform açılırken seçer
Private Sub UserForm_Initialize()

With TextBox1
.Value = "www.kod.gen.tr"
.SelStart = 0
.SelLength = .TextLength
End With
'textboxsa, günü ve ayı yazın yılı otomatik tamamlasın 'tarih girişlerinde aralara nokta girmenize gerek yoktur.
Private Sub txtDatum_Change()
'textboxsa, günü ve ayı yazın yılı otomatik tamamlasın
'tarih giriÅŸlerinde aralara nokta girmenize gerek yoktur.
Dim dat As Date
Dim iRow As Integer
Dim sTxt As String
sTxt = txtDatum.Text
If sTxt = "" Then Exit Sub
If Right(sTxt, 1) Like "[0-9]" = False Then
Beep
sTxt = Left(sTxt, Len(sTxt) - 1)
txtDatum.Text = sTxt
End If
If Len(sTxt) = 4 Then
On Error Resume Next
dat = DateSerial(Year(Date), Right(sTxt, 2), Left(sTxt, 2))
If Err > 0 Then
MsgBox "Hatalı Tarih Girişi"
Err = 0
txtDatum.Text = ""
Exit Sub
End If
iRow = WorksheetFunction.CountA(Columns(1)) + 1
Cells(iRow, 1) = dat
txtDatum.Text = ""
End If
End Sub
'Textbox taki sayıyı hücreye istediğiniz formatta yazdırır
Private Sub cmdEintragen_Click()

Dim dValue As Double

If optWaehrung.Value = True Then
'ondalıklı sayı olarak ve sonuna para simgesini
'yazdırır (13,52 YTL)
Range("A1").NumberFormat = "#,##0.00 $"
ElseIf optKolonne.Value = True Then
'ondalıklı sayı olarak yazdırır (13,52)
Range("A1").NumberFormat = "#,##0.00"
ElseIf optSingle.Value = True Then
'Ondalıklı kısmı atarak yazar (13)
Range("A1").NumberFormat = "0"
Else
'Rakamın sonuna & işareti koyar (13,52%)
Range("A1").NumberFormat = "0.00%"
End If
dValue = CDbl(txtWert.Text)
If optProzent.Value = True Then dValue = dValue / 100
Range("A1") = dValue
End Sub
'Textbox ÅŸifre girme
Private Sub cmdOK_Click()

'EÄŸer textbox'a girilen ÅŸifrelerin karekter olarak
'*** şeklinde olmasını istiyor iseniz PasswordChar değerine
' * karekterini giriniz.
If txtPasswort.Text = "kodgentr" Then
MsgBox "Tebrikler! Şifre Doğrulandı"
Unload Me
Else
MsgBox "Üzgünüm! Yazdığınız Şifre Hatalı"
txtPasswort.Text = ""
txtPasswort.SetFocus
End If

End Sub
hücredeki değeri textbox'a ondalıklı değere yuvarlayarak atar (35,435689 = 35,44'
Private Sub cmdAusTabelle_Click()
txtRunden.Value = WorksheetFunction.Round( _
Range("A1").Value, 2)
End Sub
'1. textboxtaki değerie 2. textbox a ondalık formatta transfer eder (12,34567 = 12,35)
Private Sub cmdAusTextBox_Click()

txtRunden.Value = WorksheetFunction.Round( _
CDbl(txtBasis.Value), 2)
End Sub
'textbox a yazılan kelimeler arasında boşluk vermeye izin vermez
Private Sub txtPruefung_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If Chr(KeyAscii) Like "[0-9 a-z A-Z]" = False Or _
KeyAscii = 32 Then
Beep
MsgBox "Lütfen kelimeler arasında boşluk vermeyin"
KeyAscii = 0
End If
End Sub
'textbox a girilen değerlerin önündeki 'boşlukları yok eder
Private Sub cmdMargin_Click()

With txtMargin
.SelectionMargin = Not .SelectionMargin
.SetFocus
End With


End Sub
'textbox kutusundaki harfleri scrollbar ile heceler 'tek tek seçim yapar
Private Sub scbSelect_Change()

scbSelect.SetFocus
txtSelect.SelStart = scbSelect.Value
txtSelect.SelLength = 1
txtSelect.SetFocus
End Sub
'userformun açılışında ilk karekteri seçer
Private Sub UserForm_Initialize()

With txtSelect
.SetFocus
.SelStart = 0
.SelLength = 1
End With
scbSelect.Max = Len(txtSelect.Text) - 1
End Sub
'eğer textbox taki karekter sayısı 16 dan küçakse 'userformun kapatılmasını engeller
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

If Len(TextBox1.Text) < 16 Then Cancel = True
End Sub
'Textbox a 16 karetkter yani tarih ve saat 'girebilirsiniz. Başka türlü userform kapanmaz
Private Sub TextBox1_Change()

If Len(TextBox1.Text) = 16 Then
If IsDate(TextBox1.Text) = False Then
MsgBox "İstenilen Sayıda Karekter Girdiniz"
Else
‘Mesaj kutusunda soldan 10 saÄŸdan 5 karakteri gösterir
MsgBox "Tarih: " & Left(TextBox1.Text, 10) & vbLf & "Saat: " & _
Right(TextBox1.Text, 5)
End If
End If
End Sub
'Eğer girilen değerler rakam değilse textbox u sıfıla
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If Chr(KeyAscii) Like "[0-9.: ]" = False Then
KeyAscii = 0
End If
End Sub
'textbox'a belli bir aralıktaki değerleri alır 'textbox u Listbox gibi kullanın
Private Sub UserForm_Initialize()

Dim lngRow As Long
Dim strTxt As String
lngRow = 1
Do Until IsEmpty(Cells(lngRow, 1))
strTxt = strTxt & Cells(lngRow, 1) & vbLf
lngRow = lngRow + 1
Loop
txt.Text = Left(strTxt, Len(strTxt) - 1)
End Sub
'ilk ve 2. textboxa girilen tarihler arasında 'Excel hücrelerine seri tarih yazar
Private Sub cmdOK_Click()


Dim datStart As Date, datEnde As Date
Dim iRow As Integer
datStart = DateValue(txtStart.Text)
datEnde = DateValue(txtEnde.Text)
For iRow = 1 To datEnde - datStart + 1
Cells(iRow, 1) = datStart + iRow - 1
Next iRow
Unload Me
End Sub
'textbox a yanlış tarih girmenize izin vermez 'örneğin 12.13.2005 yazarsanız uyarır 'çünkü bir yılda 12 ay vardır.
Private Sub UserForm_Initialize()

Dim intCounter As Integer
For intCounter = 1 To 4
Set txtBoxes(intCounter).TxtGroup = Controls("TextBox" & intCounter)
Next intCounter
End Sub
'1. ve 2. textboxtaki tarihler arasındaki hücrelerin 'önündeki hücreye x işareti koyar
Private Sub cmdOK_Click()

Dim rngStart As Range, rngEnd As Range
Set rngStart = Columns(1).Find( _
what:=DateValue(txtStart.Text), LookIn:=xlFormulas)
Set rngEnd = Columns(1).Find( _
what:=DateValue(txtEnd.Text), LookIn:=xlFormulas)
Columns("B").Clear
Range(rngStart, rngEnd).Offset(0, 1).Value = "X"
End Sub
'Aktif Hücreye Inputbox u çağırır ve textboxsa değeri yazar 'Böylece aynı metni yazacağınız Textboxları doldurmanız hızlanır
Private Sub cmdOK_Click()

Dim txt As String
txt = InputBox("Textbox'a Aktaracağınız Metni yazın:", , "www.kod.gen.tr")
If txt = "" Then End
gtxtBox.Text = txt
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Set gtxtBox = Controls("TextBox1")
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Set gtxtBox = Controls("TextBox2")
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Set gtxtBox = Controls("TextBox3")
End Sub
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Set gtxtBox = Controls("TextBox4")
End Sub
'Textboxa girdiğiniz değerin hücre aralığında daha önce yazılıp 'yazılmadığını kontrol eder. Eğer daha Önce yazılmışsa 'aynı veriyi tekrar yazmaz
Private Sub cmdOK_Click()

Dim var As Variant
Dim intRow As Integer
var = Application.Match(CDbl(txtValue.Text), Columns(1), 0)
If Not IsError(var) Then
MsgBox "Bu Sayı Daha Önce Girilmiş!"
Else
intRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(intRow, 1) = txtValue.Text
End If
End Sub
Private Sub cmdCancel_Click()
Unload Me
End Sub
'Textboxx tan seçilen Resimlere Link verir
Private Sub cmdOK_Click()

Dim iCounter As Integer
Dim sTag As String
Rows(1).Clear
For iCounter = 1 To 3
sTag = Controls("CommandButton" & iCounter).Tag
Cells(1, iCounter).Value = Controls("TextBox" & iCounter).Text
If sTag <> "False" And sTag <> "" Then
ActiveSheet.Hyperlinks.Add _
Anchor:=Cells(1, iCounter), _
Address:=sTag
End If
Next iCounter
Unload Me
End Sub
Private Sub CommandButton1_Click()
CommandButton1.Tag = SelectPicture
End Sub
Private Sub CommandButton2_Click()
CommandButton2.Tag = SelectPicture
End Sub
Private Sub CommandButton3_Click()
CommandButton3.Tag = SelectPicture
End Sub
Private Function SelectPicture()
Dim var As Variant
var = Application.GetOpenFilename("Ä°zin Verilen Formatlar (*.gif), *.gif")
If var = False Then
SelectPicture = "False"
Else
SelectPicture = var
End If
End Function
'Excel Tablosundaki parça nosunu textbox a girince 'o numaraya denk gelen parçalar listbox ta listelenir 'ara bul
Private Sub txtValue_Change()

Dim arr() As Variant
Dim iRow As Integer, iCol As Integer, iCounter As Integer
If txtValue.TextLength = 4 Then
iRow = 2
Do Until IsEmpty(Cells(iRow, 1))
If Cells(iRow, 1) = txtValue.Text Then
iCounter = iCounter + 1
ReDim Preserve arr(1 To 4, 1 To iCounter)
For iCol = 1 To 4
arr(iCol, iCounter) = Cells(iRow, iCol).Value
Next iCol
End If
iRow = iRow + 1
Loop
lstValues.Column = arr
End If
End Sub
'kapalı dosyadan textbox a veri alır
Private Sub cmdOK_Click()

Dim sPath As String, sFile As String, sWks As String
Dim sRange As String
sPath = "c:\test"
sFile = "test.xls"
sWks = "Sayfa1"
sRange = "askin"
If Dir(sPath & "\" & sFile) = "" Then
Beep
MsgBox "Tarih " & sFile & " "
Exit Sub
End If
On Error Resume Next
Range("IV1").Formula = "='" & sPath & _
"\[" & sFile & "]" & sWks & "'!" & sRange
txtImport.Text = Range("IV1").Value
Range("IV1").ClearContents
End Sub
'Textbox a girilen değer sürekli hücredeki değerin üzerine toplama yapar
Private Sub cmdOK_Click()


If TextBox1.Text <> "" Then
Range("A1").Value = Range("A1").Value + CDbl(TextBox1.Text)
End If
If TextBox2.Text <> "" Then
Range("B3").Value = Range("B3").Value + CDbl(TextBox2.Text)
End If
If TextBox3.Text <> "" Then
Range("C6").Value = Range("C6").Value + CDbl(TextBox3.Text)
End If
End Sub
'Eğer Textboxsa sizin istediğiniz değer girilmezse textboxtan çıkılamaz
Private Sub TextBox1_Exit _
(ByVal Cancel As MSForms.ReturnBoolean)

If TextBox1.Value <> "Aşkın" Then
MsgBox "Yanlış Veri"
TextBox1.SetFocus
Cancel = True
End If
End Sub
‘textbox taki veri 5 karekterden fazla olursa kabul edilmez
Private Sub TextBox1_Exit _
(ByVal Cancel As MSForms.ReturnBoolean)

If Len(TextBox1.Text) > 5 Then
MsgBox "Fazla Karakter Girdiniz"
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Text)
End If
End Sub
'textboxtaki 3 adet textbox taki değerleri A1-B1-C1 hücrelerine sırayla yazdırır
Private Sub CommandButton1_Click()

Dim i As Integer
For i = 1 To 3
Cells(1, i) = Controls("Textbox" & i)
Next i
End Sub
'1. sütunda aynı değerde 2 kayıt yapalamaz (mükerrer)
Private Sub CommandButton1_Click()

Dim temp, temp1

temp = TextBox1.Value
temp1 = IIf(Application.CountIf(Columns(1), temp) > 0, 1, 0)

If temp1 > 0 And TextBox1.Value <> "" Then
MsgBox "Aynı Kayıttan Bulundu"
Else
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = temp
End If
End Sub
Soru
textboxtaki değer mesala 56,50 ise bunu 57veya 56,49 ise bunu 56 olarak nasıl göstere bilirim.Bunu sağlayabilecek bir Function arıyom
Cevap
TextBox1.Value = Round(TextBox1.Value, 0)
TextBox1.Value = CLng(TextBox1.Value)
Private Sub TextBox1_Exit _
(ByVal Cancel As MSForms.ReturnBoolean)
'Eğer Textboxsa sizin istediğiniz değer girilmezse textboxtan çıkılamaz
If TextBox1.Value <> "Aşkın" Then
MsgBox "Yanlış Veri"
TextBox1.SetFocus
Cancel = True
End If
End Sub
Private Sub TextBox1_Exit _
(ByVal Cancel As MSForms.ReturnBoolean)
‘textbox taki veri 5 karekterden fazla olursa kabul edilmez
If Len(TextBox1.Text) > 5 Then
MsgBox "Fazla Karakter Girdiniz"
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Text)
End If
End Sub
Kaynak: Excel vba Örnek Dosyalar Cd'si

msgbox özellikleri, (mesaj kutuları)

msgbox özellikleri, (mesaj kutuları)




Function FileOrFolderName(InputString As String, _
ReturnFileName As Boolean) As String

Dim i As Integer, FolderName As String, FileName As String
i = 0
While InStr(i + 1, InputString, Application.PathSeparator) > 0
    i = InStr(i + 1, InputString, Application.PathSeparator)
Wend
If i = 0 Then
    FolderName = CurDir
Else
    FolderName = Left(InputString, i - 1)
End If
FileName = Right(InputString, Len(InputString) - i)
If ReturnFileName Then
    FileOrFolderName = FileName
Else
    FileOrFolderName = FolderName
End If
End Function

Sub TestFileOrFolderName()
‘cdrom sürücüleri msgboxta gösterir
MsgBox FileOrFolderName(ThisWorkbook.FullName, False), , _
    "This Workbook Foldername:"
MsgBox FileOrFolderName(ThisWorkbook.FullName, True), , _
    "This Workbook Filename:"
End Sub
________________________________________
Sub goster()
‘Hücre DeÄŸerinin Msgbox ta gösterilmesi
Dim veri As String
veri = Cells(8, 5).Value '8. satır 5. sütun
MsgBox ("Şu Anda E8 Hücresinde" + vbNewLine + veri _
+ vbNewLine + "DeÄŸeri var")
'vbNewline bir alt satıra indirir.
'chr(13)+chr(10) da yazılabilir
End Sub
________________________________________
Sub Düğme1_Tıklat()
'vbDefaultButton2 parametresi ile aktif olacak buttonun "Hayır"
'olacağını belirtiyoruz. Buylece klavyeden Enter
'tuşuna basılınca tıklanan (ilk olarak) düğmeyi belirleR

Dim Mesaj As String
Mesaj = MsgBox("Program Kapatılsınmı?", vbYesNo + _
vbCritical + vbDefaultButton2) 'ikinci button aktif olsun
If Mesaj = vbYes Then
Application.Quit
Else
MsgBox ("Kapatma Ä°ÅŸlemi iptal Edildi"), , "www.kod.gen.tr"
End If
End Sub
________________________________________
Sub Düğme1_Tıklat()
'Mesaj kutusu en üste
'vbSystemModal; (varsayılan VbApplicationModal dir) Parametresi çalışan
'diğer uygulamaların (Notepad veya calc veya başka form)
'mesaj penceresini kapatıp (üste gelme) kapatamıyacağını belirler

Dim Mesaj As String
Mesaj = MsgBox("Program Kapatılsınmı?", vbYesNo + _
vbCritical + vbDefaultButton2 + vbSystemModal)
If Mesaj = vbYes Then
Application.Quit
Else
MsgBox ("Kapatma Ä°ÅŸlemi iptal Edildi"), , "www.kod.gen.tr"
End If
End Sub
________________________________________
Sub Düğme1_Tıklat()
‘Ä°kili mesaj kutusu (evet hayır)
Dim Mesaj As String
Mesaj = MsgBox("www.kod.gen.tr", vbYesNo)
If Mesaj = vbYes Then
MsgBox ("Evet Düğmesine Tıkladınız"), , "www.kod.gen.tr"
Else
MsgBox ("Hayır Düğmesini Tıkladınız"), , "www.kod.gen.tr"
End If
End Sub
________________________________________
Sub Düğme1_Tıklat()
'İkonlar için kullanılabilecek Seçinekler
'Vbquestion (Soru Ä°konu)
'vbInformation
'VbExclamation (Dikkat Ãœnlem Ä°konu)
'VbCritical (çarpı ikonu Tehlike)
Dim Mesaj As String
Mesaj = MsgBox("www.kod.gen.tr", vbYesNo + vbQuestion)’resimler burada
If Mesaj = vbYes Then
MsgBox ("Evet Düğmesine Tıkladınız"), , "www.kod.gen.tr"
Else
MsgBox ("Hayır Düğmesini Tıkladınız"), , "www.kod.gen.tr"
End If
End Sub
________________________________________
Sub MessageBox3()
' Birdan fazla satırlı msgbox. vbCrLf alt satıra indirir
Dim strMessage As String
strMessage = "Kategorilerle Vba Cd'si" & vbCrLf & "www.kod.gen.tr" & vbCrLf & "A.Aşkın KÜÇÜKKAYA"
MsgBox strMessage
End Sub

________________________________________
Private Sub Workbook_Deactivate()
‘Kodları ThisWorkbook’a yazınız
'Kapanışta Selam
MsgBox ("Yine Bekleriz" & vbCrLf & "Güle Güle"), , "http://www.kod.gen.tr"
End Sub

Private Sub Workbook_Open()
'açılışta selam
MsgBox ("Merhaba HoÅŸgeldiniz" & vbCrLf & "Kolay Gelsin"), , "http://www.kod.gen.tr"
End Sub
________________________________________
Sub Test()
'Sayfa1.hücreB2:J2 aralığını mesaj kutusunda gösterimi
Dim Email As String, Subj As String
Dim Msg As String, url As String
Dim Vin As String
Dim r As Integer, x As Double
For r = 2 To 2

Email = Cells(r, 1)
' Mesajın Konusu
Subj = "Sayfanızdaki yazılar"

Dim cell As Range
Dim strbody As String
For Each cell In ThisWorkbook.Sheets("Sayfa1").Range("B1:J1")
strbody = strbody & cell.Value & " , "

Dim cell2 As Range
Dim grades As String
For Each cell2 In ThisWorkbook.Sheets("Sayfa1").Range("B2:J2")
grades = grades & cell.Value & " , "

Next
Next
' Mesajı oluştur
Range("A1").Select
Msg = ""
Msg = "Sevgili " & Cells(r, 1) & "," & vbCrLf & vbCrLf _
& "Aşağıda sizin belirttiğiniz aralığa ait yazılar bulunmaktadır." & vbCrLf & vbCrLf _
& strbody & ", " & grades & ", " & Cells(r, 2).Text & ", " _
& Cells(r, 3).Text & ", " & Cells(r, 4).Text & ", " _
& Cells(r, 5).Text & ", " & Cells(r, 6).Text & ", " _
& Cells(r, 7).Text & ", " & Cells(r, 8).Text & ", " _
& Cells(r, 9).Text & ", " & vbCrLf & Cells(r, 10).Text & ", " _
& Cells(r, 11).Text & vbCrLf & "Eric Duchin" & " www.kod.gen.tr"

MsgBox Subj & Chr(13) & Msg
Next
End Sub
________________________________________
Sub test()
'mesaj kutusu 10 saniye sonra çalışır
If Application.Wait(Now + TimeValue("0:00:10")) Then
MsgBox "Zaman Sona Erdi"
End If
End Sub

Yurtiçi Geçici Görev Yolluğu

Personellerin yurt içi geçici görev yolluklarını hazırlamak amacı ile hazırladığım bir program. Excele yeni başlayanları düşünerek mümkün olduğu kadar az formül kullanılarak daha ziyade kodlamalarla oluşturulmuş bir çalışmadır.

İndirmek için tıkla

Telefon ve adsl ödeme dosyası

Açıklama: Kendi kurumumda kullandığım excel ve birazda vba kodu kullanılrak hazırladığım Telefon ve Adsl ödemeleri için hazırlanmş excel dosyası.
Özelllikleri;
Ödeme listesi sayfasına girilen fatura listeleri otomatik sayılır ve ilgili bölüme yazılır.
Açılır Kutudan ilgili ayı seçebilirsiniz.
Fatura tutarlarını otomatik toplar
Nakit ve üzerindeki tüm bilgiler otomatik oluşturulur
Nakit üzerindeki Açıklama ve ekler bölümündeki bilgiler otomatik yazdırılır.


Combobox'taki değere göre diğer combobox'ların değişmesi

BU DOSYA Ä°LE;
-İlk Açılır Kutudan Seçtiğiniz Kişilerin Yakınlarını diğer açılır kutulara (combobox lara getirebilirsiniz.)

-Sadece seçtiğiniz kişi ile ilgili diğer bilgilere zahmetsizce ulaşırsınız.


Nesne Kütüphanelerinin eklenmesi veya çıkarılması

References iletişim kutusunu kullanarak nesne kütüphanelerini ekleyebilir ve çıkartabilirsiniz.

Nesne kütüphanelerini ekleyerek çalışacak ek nesneler kazanabilirsiniz; görmeniz veya kullanmanız gerekmeyen nesne kütüphanelerini çıkartarak da, VBA’in bir projenin kodunu derlerken çözmesi gereken nesne referansı sayısını azaltabilir ve bu ÅŸekilde daha hızlı çalışmasını saÄŸlayabilirsiniz.


Excel dosyasındaki istenmeyen sayfaların silinmesi

Soru:
Excel dosyamın açılışında isimleri x ve y olan sayfalar haricinde sayfa varsa bu sayfaların silinmesini nasıl sağlayabilirim?

Cevap:
VBA penceresinde ThisWorkbook bölümünde aşağıdaki kodu yapıştırın


öğrenci notları hesaplama


şeklinde öğrenci notlarını gösterem bir tablomuz olsun
Yapacağımız işlemleri liste halinde yazalım
  • 1- Endüşük Not
  • 2- Endüşük Not hangi öğrenciye ait
  • 3- Endüşük notu alan öğrenciyi ve aldığı notu rakamla ve yazıyla  birleÅŸtir formülünü  kullanarak metnin içine otomatik yazdırmak


Excel Userfordan Sayfaya Kayıt