TOP

VBA-Ders 7.2. Koşullar (Koşullar)

If...Then...Else ve Select Case koşullarını kontrol etmenin yanı sıra aşağıdaki kontrolleri de kullanabiliriz:

  • veri türlerinin karşılaştırılması (IsNumeric, IsDate, IsEmpty, operatör Is Nothing işlevleri)
  • değişken türlerinin karşılaştırılması (VarType işlevi)
  • metin akışlarını karşılaştırma (operatör Like)

  • Veri türü kontrolü

    IsNumeric (önceki derste kullandığımız işlev), değer bir sayıysa TRUE (TRUE) değerini, - bir sayı değilse FALSE (FALSE) değerini döndürür:

    If IsNumeric(Range("A1")) = True Then 'DEĞER SAYI İSE...
    

    Aşağıdaki kod öncekiyle aynı etkiyi yaratır (yapının kendisi bir durum kontrolü olduğundan = True'yu eklememize gerek yoktur):

    If IsNumeric(Range("A1")) = True Then 'DEĞER SAYI İSE...
    

    Bir değerin sayı olup olmadığını kontrol etmek istiyorsak bunu iki şekilde yapabiliriz:

    If IsNumeric(Range("A1")) = False Then 'DEĞER BİR SAYI DEĞİLSE...
    
    If Not IsNumeric(Range("A1")) Then 'DEĞER BİR SAYI DEĞİLSE...
    

    IsNumeric'e benzer birkaç fonksiyona daha bakalım:

    If IsDate(Range("A1")) Then 'DEĞER TARİH İSE...
    
    If IsEmpty(Range("A1")) Then 'BOŞ İSE...
    
    If var_object Is Nothing Then 'NESNE TANIMLANMADIYSA...
    

    Bir değişkenin türünü kontrol etme

    Bir değişkenin türüne göre komutları yürütmek için VarType fonksiyonunu kullanmamız gerekecek.

    "=" işaretini girdiğimiz anda değişken türlerinin listesi görünecektir:

    If VarType(my_variable) = vbInteger Then 'EĞER my_variable değişken türü Integer ise ...
    

    Sabitlerin değerleri:

    Devamlı Değer
    vbEmpty0
    vbNull1
    vbInteger2
    vbLong3
    vbSingle4
    vbDouble5
    vbCurrency6
    vbDate7
    vbString8
    vbObject9
    vbError10
     If VarType(my_variable) = vbInteger Then 'EĞER my_variable değişken türü Integer ise ...
     'Şununla aynıdır:
     If VarType(my_variable) = 2 Then 'EĞER my_variable değişken türü Integer ise ...
    

    Metin Akışlarını Karşılaştırın (Like)

    Biraz önce aşağıdaki kod parçasını kullanmıştık:

    my_variable = "Example 12345"
    
    If my_variable = "Example 12345" Then '=> DOĞRU (TRUE)
    

    Bu durumda iki bant aynıdır ancak değişkenin "12345" değerini içerip içermediğini kontrol etmek istersek; diğer karakterleri dikkate almadan o zaman Like komutunu ve aradığımız değerin öncesinde ve sonrasında * (yıldız) operatörünü kullanmalıyız.

    Operatör * (yıldız işareti) şu şekilde çözülür: herhangi bir karakter veya karakter kümesi:

    my_variable = "Example 12345"
    
    If my_variable Like "*12345*" Then '=> DOĞRU (TRUE)
    

    # operatörünün (karma) kodu şu şekilde çözülür: 0'dan 9'a kadar herhangi bir tek sayısal karakter:

    my_variable = "Example 12345"
    
    If my_variable Like "Example 12###" Then '=> DOĞRU (TRUE)
    

    Şebeke? (soru işareti) şu şekilde çözülür: herhangi bir tek karakter:

    my_variable = "Example 12345"
    
    If my_variable Like "?xample?1234?" Then '=> DOĞRU (TRUE)
    

    Ayrıca belirli karakterleri veya bir dizi karakteri de aynı şekilde kullanabiliriz:

    my_variable = "Example 12345"
    
    If my_variable Like "[DEF]xample 1234[4-7]" Then '=> DOĞRU (TRUE)
    

    Şebeke! (ünlem işareti) ['den sonra eklenirse şu anlama gelir: köşeli parantez içine alınmayan herhangi bir karakter:

    my_variable = "Example 12345"
    
    If my_variable Like "[!GHIJ]xample 1234[!6-9]" Then '=> DOĞRU (TRUE)
    
    Bu bağlamda büyük harfler aynı küçük harflere eşdeğer değildir. Büyük ve küçük harfler arasında ayrım yapmak istemiyorsanız modülün başına Option Metni Karşılaştır komutunu yazmanız yeterlidir.