Vba'nın iç içe if işlevi nasıl kullanılır?
VBA’da, iç içe IF’ler oluşturmak için bir IF ifadesini başka bir IF ifadesinin içinde kullanabilirsiniz. Basit bir ifadeyle, başka bir IF ifadesinin sonucuna dayalı olarak IF kullanarak bir test ifadesini çalıştırabilirsiniz. Bu tür koşullu ifadelerde karmaşık koşulları test etmeniz gerekir. Bir örnek görelim:
Yukarıdaki örnekte iki koşulu test ediyoruz; koşul1 (1 + 1 = 2) ve koşul2 (2 + 2 = 4).
Ancak biz IF ifadesinin içindeki IF ifadesi olduğumuz için, VBA önce ilk koşulu test edecek ve ardından bir sonraki IF’ye geçecektir.
İkinci IF’de koşulun DOĞRU olup olmadığını gösteren bir mesaj kutumuz var.
Sub myMacro1() 'first if statement If 1 + 1 = 2 Then 'second if statement If 2 + 2 = 4 Then MsgBox True End If Else MsgBox False End If End Sub
Burada birden fazla IF’yi tek bir IF’de kullanmanın bir örneği verilmiştir.
Daha önce kullandığımız örnekle yukarıdaki örnek arasında bir fark var: Bu kodda “Else” için iç içe koşul kullandık.
İlk koşul doğru değilse VBA “Başka”ya atlayacak ve koşulu test edecektir, eğer bu koşul doğru değilse bir sonrakine geçecektir.
Bu şekilde test etmek için toplam dört koşulumuz var.
Sub myMacro2() Dim myScore As Single: myScore = Range("A1").Value If myScore >= 80 Then MsgBox "Excellent" Else If myScore >= 60 And myScore < 80 Then MsgBox "Good" Else If myScore >= 40 And myScore < 60 Then MsgBox "Average" Else If myScore < 40 Then MsgBox "Poor" End If End If End If End If End Sub
Bu iç içe geçmiş IF ifadesi, A1 hücresinin puanını test edecek ve buna göre bir mesaj kutusu görüntüleyecektir.
VBA iç içe geçmiş birden fazla satıra sahip IF (IF)
Her iki sonucu da (Doğru ve Yanlış) çalıştırmak için iki farklı IF kullanabilirsiniz.
Yukarıdaki örnekte gördüğünüz gibi öncelikle test edecek bir koşulumuz var ve eğer bu koşul DOĞRU ise, o zaman test edecek başka bir koşulumuz var ve eğer bu ikinci koşul DOĞRU ise bir mesaj kutusu alacaksınız.
Ve eğer ana koşul yanlışsa, test etmeniz gereken başka bir koşul vardır ve bu koşulun doğru olması durumunda bir mesaj kutusu alırsınız.
Sub myMacro3() If 1 + 1 = 2 Then If 2 - 1 = 1 Then MsgBox "Condition1 is TRUE." End If Else If 3 - 2 = 1 Then MsgBox "Condition2 is TRUE." End If End If End Sub