Operatörler
Aritmetik Operatörler
Matematikte bildiğimiz 4 işlem operatörü VBA'de de aynen geçerlidir. Bunlara ek olarak;
- "\" tam sayı bölme işareti olup, bir tamsayılı bölme sonunda böleni verir. Ör: 9 \ 6=1, başka bir örnek:14 \ 3 =4.
- Mod operatrörü ise tamsayılı bölme işleminde kalanı verir. Ör: 9 Mod 6=3, 14 Mod 3= 2. Küçük bir sayının büyük sayıyla Mod'u küçük sayının kendisidir.
- ^ işareti: Üs aldırır. 3^2=9
Karşılaştırma Operatörleri
Amaç | Operatör | Örnek |
---|---|---|
Eşit mi | = | If A=B then .... |
Büyük mü | > | If A>B then .... |
Küçük mü | < | If A<B then .... |
Büyük eşit mi | >= | If A>=B then .... |
Küçük eşit mi | <= | If A<=B then .... |
Eşitsizlik | <> | If A<>B then .... |
Özel yazımı olan bir kontrol şekli var, o da True/False kontrolü. Bu kontrolü yaparken direkt boolean tipli değişkenin kendisini yazarak sorgulayabiliriz. Ör:
Sub bool_andor()
Dim a As Boolean
a = True
If a And (x = 0 Or y = 1) Then 'if a=True demek yerine
MsgBox "Doğru"
Else
MsgBox "yanlış"
End If
End Sub
Mantıksal Operatörler
Amaç | Operatör | Örnek |
---|---|---|
Ve | And | If A=B and A>0 then .... |
Veya | Or | If A>B or A=0 then .... |
Değil | Not | If Not obj Is Nothing then .... |
Not operatörünün ilginç bir kullanımı da boolean tipli değişkenleri tersine döndürmek içindir. Özellikle toggle işlemlerinde(Ör:Bi düğmeye defalarca basıldığında True/False döngüsüne girme durumu) çok kullanılır.
Sub bool_not()
Dim a As Boolean
a = True
a= not a ' a şimdi False oldu
End Sub
Birleştirme operatörleri
İki tür birleştirme operatörü var.
- +: Bu operatör iki numerik ifadeyi toplarken iki string ifadeyi birleştirir.
- &:Bu hem numerik hem string değişkenleri birleştirir
+ işareti kullanıldığında değişkenlerden biri string tipte olsa bile eğer içeriği sayı ise birleşme yerine toplama olur. Aşağıda örnekler mevcut.
Sub birlestirme()
Dim a As String
Dim b As String
Dim c As Integer
Dim d As Integer
Dim e As String
a = "10"
b = "20"
c = 300
d = 5000
e = "volkan"
Debug.Print "merhaba " + e 'iki string + ile birleşir
Debug.Print "merhaba " & e 'iki string & ile birleşir
Debug.Print a + b 'iki sayısal içerikli string + ile birleşir>1020
Debug.Print a & b 'iki sayısal içerikli string & ile birleşir>1020
Debug.Print a + c 'bir sayısal içerikli string ve bir numerik + ile toplanır>310
Debug.Print a & c 'bir sayısal içerikli string ve bir numerik & ile birleşir>10300
Debug.Print c + d 'iki numerik + ile toplanır>5300
Debug.Print c & d 'iki numerik & ile birleşir>3005000
'Debug.Print c + e 'hata verir, numerik ve sayısal içerikli olmayan string toplanamaz
End Sub
Değişkenleri kendisiyle toplama/birleştirme
Bir InputBox/MsgBox içindeki veya otomatik mailingdeki Body metni çok uzun ise bu metni parçalar halinde yazıp bunları sürekli kendisiyle birleştirerek ilerlemek yaygın bir yöntemdir.
Sub satırgeçiş()
mesaj = "Müşteri segmenti için bir değer giriniz. " & vbCrLf
mesaj = mesaj + "Bireysel müşteriler için 1," & vbCrLf
mesaj = mesaj + "Ticari müşteriler için 2," & vbCrLf
mesaj = mesaj + "Kurumsal müşteriler için 3"
a = InputBox(mesaj)
End Sub
Bir başka örnek de şöyle olabilir
Sub mailbodyornek()
bodymsj="Değeri arkadaşlarımız" & Chr(10) & Chr(10)
bodymsj=bodymsj+"........."
bodymsj=bodymsj+"........"
bodymsj=bodymsj+"........"
'Diğer kodlar
End Sub
Bir de sayısal değişkenlerin kendisiyle toplanması vardır. Bu yöntemi de özellike döngüsel yapılar içinde kullanırız. Değişkenin kendisini 1 ile toplayarak, değerini artırmış oluruz.
Sub sayıartır()
Dim i As Integer
i=0
Do
'Diğer kodlar
i=i+1 'burada i'yi her defasında bir artırmış oluyoruz. Gelişmiş dillerdeki i++ ifadesinin aynısıdır
Loop Until i=100
End Sub