13.03.2018 tarihinde,VBA konularına Worksheet Olayları sayfası eklenmiştir.

16.02.2018 tarihinde,VBA konularına Workbook Olayları sayfası eklenmiştir.

28.12.2017 tarihinde,VBA konularına Dosya Okuma/Yazma sayfası eklenmiştir.

20.12.2017 tarihinde,sitem mobil uyumlu hale gelmiştir.

VBAMakroTemeller3

Operatörler

Aritmetik Operatörler

Matematikte bildiğimiz 4 işlem operatörü VBA'de de aynen geçerlidir. Bunlara ek olarak;

  • "\" Mod işareti olup, bir tamsayılı bölme sonunda kalanı verir. Ör: 9 \ 6=3, başka bir örnek:8 \ 3 =2. \ işareti yerine doğrudan Mod kelimesi de yazılabilir. 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ögü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

YORUMLAR