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

20.12.2017 tarihinde,sitem mobil uyumlu hale gelmiştir.

02.12.2017 tarihinde,Excel Fonksiyon konularına "Dizi Formülleri ve SUMPRODUCT" sayfası eklenmiştir.

31.10.2017 tarihinde,VBA Dictionary sayfasına Dictionary, Collection ve Collection dizisinden oluşan ilginç bir örnek eklenmiştir.

26.10.2017 tarihinde,Excel Fonksiyon konularına "İsatistiki ve Matematiksel fonksiyonlar" sayfası eklenmiş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