VBA IIF İşlevi

Bu eğitim, VBA'da IIF'nin nasıl kullanılacağını açıklayacaktır.

VBA IIF işlevi, Excel'deki EĞER İşlevini kullanmaya benzer. Bir koşulun karşılanıp karşılanmadığını test eder, DOĞRU ise bir değer (veya hesaplama), YANLIŞ ise başka bir değer (veya hesaplama) döndürür.

VBA If İfadesine benzer, çoğu kişi bunu bu yöntemi kullanmanın bir kısayolu olarak kabul eder, çünkü istenen sonucu elde etmek için bir kod satırı kullanmak yerine yalnızca bir satır kod yazmanız gerekir. Eğer… O zaman… Else… Eğer Bittiyse rutin. Ancak, kodunuzda sorunlara yol açabileceğinden doğru kullanılması gerekir.

IIF Sözdizimi

IFF işlevi 3 kısımdan oluşur - mantıksal test, doğru kısım ve yanlış kısım.

  • İfade:Gerçekleşmesi gereken mantıksal test.
  • Gerçek Parça: Mantıksal test DOĞRU ise döndürülecek sonuç.
  • Yanlış Parça: Mantıksal test YANLIŞ ise döndürülecek sonuç.

IIF İşlev Prosedürü Yazma

123 İşlev GetNames(strName As String) As StringGetNames = IIf(strName = "John", "Ad John", "Ad John değil")Bitiş İşlevi

Yukarıdaki fonksiyonda, fonksiyona aktardığımız değişkenin “John” dizisi olup olmadığını test etmek için bir alt prosedür kullanabiliriz.

123 Alt TestGetNamaes()MsgBox GetNames("John")Alt Bitiş

TestGetNames alt prosedürünü çalıştıracak olsaydık, GetNames İşlevini çağırır ve bir mesaj kutusu döndürür.

Bunun yerine If yöntemini kullansaydık, kod şöyle görünürdü:

1234567 İşlev GetNames(strName As String) As StringIf(strName = "John") SonraGetNames = "Adı John"BaşkaGetNames = "Ad John değil"BitirBitiş İşlevi

5 satır kod yerine etkili bir şekilde bir satır kod yazdık - etkileyici!

Bunun Yerine Neden Kullanılıyor?

Aşağıdakileri göz önünde bulundur

123 İşlev GetNames(strName As String) As StringGetNames = IIf(strName = "John", MsgBox("Ad John"), MsgBox("Ad John değil"))Bitiş İşlevi

Şimdi, işlevinizi çağırmak için aşağıdaki Alt Prosedürü çalıştırırsanız

123 Alt TestGetNames()GetNames ("John")Alt Bitiş

Daha önce olduğu gibi aynı mesaj kutusunu alırsınız, ancak bundan hemen sonra - bir sonraki mesaj kutusunu alırsınız!

IIF işlevi, kod satırının hem DOĞRU hem de YANLIŞ bölümlerini yürütür - koşulun doğru olduğunu bulduğunda koddan çıkmaz - yine de yanlış bölümü de yürütür - böylece bize yanlış bir mesaj verir. ikinci mesaj kutusu. kullanmış olsaydınEğer… O zaman… Else… Eğer Bittiyse - bu gerçekleşmeyecekti - EĞER işlevi, koda geçirilen mantığa bağlı olarak, kodun yalnızca DOĞRU veya YANLIŞ bölümünü yürütür.

Mesaj kutuları, koddan sonra veya alt rutinde değil, IIF ifadesinin açık olduğu kod satırında tutularak, kod kötü tasarlanmış (bilerek!). IIF işlevi, ifadenin hem DOĞRU hem de YANLIŞ bölümlerini çalıştırdığından, her iki ileti de döndürülür.

Aşağıdaki kodda olduğu gibi mesaj kutusunu IIF fonksiyon satırının altına taşıyarak veya bu makaledeki ilk örnekteki gibi mesaj kutusunu Alt Prosedüre taşıyarak bu hatayı düzeltebiliriz.

1234 İşlev GetNames(strName As String) As StringGetNames = IIf(strName = "John", "Ad John", "Ad John değil")MsgBox (GetNames)Bitiş İşlevi

Kod yazarken dikkatli olursanız, IIF işlevi size bol miktarda kod satırı ve fazladan yazma tasarrufu sağlayabilir!

İç içe IIF'ler

IIF işlevini, EĞER işlevini yuvalamaya benzer şekilde yuvalayabiliriz, ancak bir kez daha, her şey tek satırda yapılır.

123 İşlev GetDiscount(dblPrice As Double) As DoubleGetDiscount = IIf(dblPrice >= 500, 10, IIf(dblPrice >= 250, 5, IIf(dblPrice >= 100, 2.5, 0)))Bitiş İşlevi

Daha sonra bu işlevi bir Alt Prosedürden çağırabiliriz.

12345 Alt FindDiscount()Çift Olarak Dim dblPdblP = 899MsgBox ("Alabileceğiniz indirim " & GetDiscount(dblP) & "%")Alt Bitiş

veya bir UDF (Kullanıcı Tanımlı İşlev) olarak kullanarak Excel'in içinden arayabilirsiniz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave