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.

    LO Calc'ta YLC Utilities menüsü

    LO Calc'ta YLC Utilities menüsü

    Excel'ta YLC Utilities menüsü

    Excel'ta YLC Utilities menüsü