Bu öğretici, VBA'da iç içe If ifadelerinin nasıl kullanılacağını gösterecektir.
İfadeler, koşulun Doğru veya Yanlış olup olmadığını görmek için VBA'da tek bir koşulu test etmenize izin veriyorsa ve cevaba bağlı olarak kod, doğru ifade veya yanlış ifade yönünde hareket edecektir.
Tek bir EĞER ifadesi
1234567891011 | Alt TestIfTamsayı olarak x karartx = 10x = 10 ise'x 10 ise, koşul doğrudurMsgBox x 10"Başka'x 10 değilse, koşul yanlıştırMsgbox "x 10 değil"BitirAlt Bitiş |
İç içe geçmiş IF'ler açıklandı
İç İçe If, orijinal If'nin True ve/veya False ifadelerinin her birinin İÇERİSİNE birden çok koşul koymanıza izin verir.
1234567891011121314151617181920212223242526 | Alt TestNestedIf()Tamsayı olarak x karartTamsayı olarak Dim yTamsayı olarak Dim zx = 10y = 9z = 8x = 10 ise'x 10 ise, koşul doğrudur, bu nedenle y için test ediny = 8 iseMsgBox "y 9'dur"Başka'y 10 değilse, koşul yanlıştırMsgbox "y 9 değil"BitirBaşka'x 10 değilse, koşul yanlıştır, öyleyse hadi' z için test edelimz = 8 iseMsgBox "z 8'dir"Başka'z 8 değilse, koşul yanlıştırMsgbox "z 10 değil"Bitir'Başka bir Son If, orijinali kapatmak için gerekirseBitirAlt Bitiş |
Kodunuzu yazarken girintilemek her zaman iyi bir uygulamadır, çünkü bir aşamada geri dönmeniz gerektiğinde veya başka bir programcının okuması gerektiğinde kodun okunmasını ve takip edilmesini kolaylaştırır.
Ayrıca, kullanıcı tarafından tasarlanmış bir işlev (UDF) oluşturabilir ve parametreleri kullanarak bazı hücrelerin değerlerini Excel'den işleve çağırabiliriz.
1234567891011121314151617181920 | String olarak GetIf(x tamsayı, y tamsayı, z tamsayı) işlevix = 10 ise'x 10 ise, koşul doğrudur, bu nedenle y için test ediny = 8 iseGetIf= "y 9'dur"Başka'y 10 değilse, koşul yanlıştırGetIf="y 9 değil"BitirBaşka'x 10 değilse, koşul yanlıştır, öyleyse hadi' z için test edelimz = 8 iseGetIf="z 8'dir"Başka'z 8 değilse, koşul yanlıştırGetIf="z 10 değil"Bitir'Başka bir Son If, orijinali kapatmak için gerekirseBitirBitiş İşlevi |
Pratik ise İç İçe Örnek
Aşağıdaki işlevi göz önünde bulundurun:
12345678910111213141516171819202122 | İşlev GetDiscount(dblPrice As Double) As DoubledblPrice >= 1000 ise'fiyat 1000'den büyükse, bir indirim atayındblPrice >= 2000 ise2000'den fazla ise %10 indirimGetDiscount = dblPrice * 0.1Başka'aksi takdirde% 5 indirim verGetDiscount = dblPrice * 0.05Bitir'fiyat 1000'den büyük değilseBaşka'500'den fazla ise %2,5 indirim yapındblPrice >= 500 iseGetDiscount = dblPrice * 0.025Başka'aksi takdirde indirim yokGetIndirim = 0Bitir'Başka bir Son If, orijinali kapatmak için gerekirseBitirBitiş İşlevi |
Bu işlevi bir Excel sayfasında kullanarak, bir siparişin toplam fiyatını görmek için test edebilir ve bu toplama bağlı olarak farklı indirimler uygulayabiliriz.
VBA Programlama | Code Generator sizin için çalışıyor!
ElseIf'i kullanma
ElseIf, kodunuzu basitleştirmemize olanak tanır, çünkü yalnızca ikinci if ifadesine, ilki false döndürürse geçer.
12345678910111213141516 | İşlev GetDiscount(dblPrice As Double) As Double'kod yazmayı azaltmak için else'i kullanındblPrice >= 2000 iseGetDiscount = dblPrice * 0.1ElseIf dblPrice >= 1000 O zamanGetDiscount = dblPrice * 0.075ElseIf dblPrice >= 500 O zamanGetDiscount = dblPrice * 0.05ElseIf dblPrice >= 200 O zamanGetDiscount = dblPrice * 0.025ElseIf dblPrice >= 100 O zamanGetDiscount = dblPrice * 0.01BaşkaGetIndirim = 0BitirBitiş İşlevi |
Vaka Bildirimi Kullanma
Aynı etkiyi elde etmek için bir Vaka Bildirimi de kullanabiliriz.
1234567891011121314151617 | İşlev GetDiscount(dblPrice As Double) As DoubleVaka Seç dblPrice'bu vaka bildiriminde 6 farklı indirim seviyesi varVaka >= 2000GetDiscount = dblPrice * 0.1Vaka >= 1000GetDiscount = dblPrice * 0.075Vaka >= 500GetDiscount = dblPrice * 0.05Vaka >= 200GetDiscount = dblPrice * 0.025Vaka >= 100GetDiscount = dblPrice * 0.01Durum BaşkaGetIndirim = 0Seçimi BitirBitiş İşlevi |