Amaç 1: Variable (değişken) deklare etmek
Sub variableName()
Dim MüşteriAdı As String
Dim Ciro As Currency
Dim Risk As Integer
Dim Tarih As Date
Dim Tarih As Boolean (TRUE or FALSE)
Dim X As Range
End Sub
Not: Bütün kodlar Sub xxx() ve End Sub
arasında yazılır. Sonraki örneklerde bu ihmal edilecek…
Not: As Range için Amaç 11’e bak
Amaç 2: Ekrana o günün tarihini getiren bir pop-up
penceresi aç
Dim i As Date
i = Date
MsgBox (i)
Amaç: A1 hücresinde 1000'den büyük bir değer
varsa ekrana yazdır ve 0,1 koordinatındaki hücreyi kırmızı yap
Range("A11").Select
If ActiveCell > 1000 Then
MsgBox (ActiveCell)
Else
ActiveCell.Offset(0,
1).Interior.Color = vbRed
End If
Not: (0,1) (X,Y) (satır, sütun)
Not: offset ile aktif hücreye göre başka bir hücre tarif edilir
Amaç 3: Açılan inputbox’a girdiğin tarih bugünün
tarihinden 30 gün sonrasından sonrası ise veya 20 gün öncesinden öncesi ise;
girdiğin tarihin ayını yaz.
yani
bugün 14/9/2013 ise 24/08 ve öncesi, 15/10 ve sonrası tarih yazarsan ay
gelecek.
24/8/2013
< xxx > 15/10/2013
Dim i As Date
i = InputBox("tarih giriniz")
If i > Date + 30 Then
MsgBox "kaydınızın yapılacağı ay " & Format(i, "mmmm"), vbCritical, "dikkat"
ElseIf i < Date - 20 Then
MsgBox "kaydınızın yapılacağı ay " & Format(i,
"mmmm"), vbCritical, "dikkat"
End If
Kural: If Then Else ve Select Case aynı işi
yapar
Amaç 4: Yukarıdaki örneğin aynısı
Dim i As Date
i = InputBox("Tarih Giriniz")
Select Case i
Case Is > Date + 30
MsgBox "Kaydınızın Yapılacağı Ay " & Format(i,
"mmmm"), vbCritical, "Dikkat"
Case Is < Date - 20
MsgBox "Kayt için seçtiğiniz tarih " & Format(i,
"mmmm"), vbCritical, "Dikkat"
End Select
KULLANILIR DÖNGÜLER
For ... Next
For Each ... Next
Do While ... Loop
Do ... Loop While
Do Until ... Loop
Do Loop ... Until
Amaç 5: belirtilen range içinde “İstanbul”
ibaresini görürsen o hücrenin bulunduğu satırı sil
Dim x As Range ' As Range için bakınız
Amaç 11
Dim i As Integer
Dim y As Integer
Set x = Range("A1:A5")
i = 1
For y = 1 To x.Rows.Count
If x.Cells(i) = "İstanbul" Then
x.Cells(i).EntireRow.Delete
Else
i = i + 1
End If
Next
Not: “İstanbul” ibaresini aynı ile görmek ister
Amaç 6: tüm hücreleri büyük harfe çevirme
For Each x In Range("A1:C3")
x.Value = UCase(x.Value) ' LCase (küçükharf - Application.Proper* (ilk
harf)
Next
Not: Excel VB’de açıklama satırı kesme
işareti (‘) ve bir boşluktur
Not: ilk harflerin büyük olması için
kullanılan “Proper” öncesinde “Application” gelmesinin sebebi VB For App’de
yazım düzeni fonksiyonu yoktur. önce bir üst sınıfı (Application)
çağırmak gerekir
Amaç 7: sayaç A1 sütunu ve altındaki 15 hücreye
sırayla 1’den 15’e kadar sayı yazma
Dim i As Byte
For i = 5 To 22
Cells(i, 1) = i
Next
Not: ActiveCell kullanmadığımız için
default olarak A sütununda(n başlayarak) işlem yapıyor. Başka bir sütunda işlem
yapmasını istersek:
Dim i As Byte
For i = 5 To 22
Columns("B").Select
ActiveCell.Cells(i, 1) = i
Next
Amaç 8: A1 sütunundan itibaren çapraz olarak 15
hücreye sırayla 1’den 15’e kadar sayı yazma
Dim i As Byte
For i = 3 To 12
Cells(i, i).Select
Cells(i, i).Value = i
ActiveCell.Columns.AutoFit
Next
Amaç 9: iç içe döngüler (dene ve gör)
Dim i As Byte
Dim y As Byte
For i = 2 To 7
For y = 0 To 3
Cells(i + y, i).Value = "$"
Next y
Next i
Not: i + y ifadesi ile 4 satır 10 sütun
ilerleme sağlandı. ilk çalıştırılan döngü en son bitmeli.
Amaç 10: sayaç’ın do while ile yapılması
Dim i As Byte
i =2
Do While i <= 9
Cells(i, 1).Value = i
i = i + 1
Loop
Not: DO WHILE döngüsü (Do While Loop ile
değişken 1'den başlıyor, 15(dahil) ile bitiyor)
Amaç 11: you can also declare
an Excel VBA Range object
A1:D1
hücrelerine 8 yazmak
Dim example As Range
Set example = Range("A1:D1")
example.Value = 8
Not: “Dim” ve “Set” birlikte kullanılır
veya
A1:C4
hücrelerini seçmek
Dim example As Range
Set example = Range("A1:C4")
example.Select
veya
A1:C4
hücresinin 3’üncü satırını seçmek
Dim example As Range
Set example = Range("A1:C4")
example.Rows(3).Select
veya
A1:A2
hücrelerindekileri C4 hücresinden aşağı (C sütununa) kopyalamak
Range("A1:A2").Select
Selection.Copy
Range("C4").Select
ActiveSheet.Paste
veya
A1
hücresinin içeriğini temizlemek
Range("A1").ClearContents
veya
A1:C8
alanında bir satırda kaç hücre var
Dim example As Range
Set example = Range("A1:C8")
MsgBox example.Rows.Count
Not: son satırdaki Rows’u çıkartırsak alandaki
tüm hücreleri sayar