VBA IIF

Excel VBA IIF

Jeśli jesteś zwykłym użytkownikiem makr VBA, na pewno natknąłeś się na funkcję o nazwie „IIF” lub być może widziałeś tę funkcję w Internecie. Na pierwszy rzut oka musieliście pomyśleć, że jest to warunek JEŻELI, taki jak nasze zwykłe oświadczenie JEŻELI w programie Excel. Ale to nie jest ta sama instrukcja IF, której używamy do oceny testów logicznych i uzyskania wyników w oparciu o podane przez nas kryteria. W tym artykule przeprowadzimy Cię przez warunek „VBA IIF” w języku VBA.

Co robi stan IIF w VBA?

Jest to bardzo podobne do naszego stanu IF, ale ma nieco inny charakter. Warunek „VBA IIF” sprawdza podane wyrażenie lub test logiczny i zwraca wynik PRAWDA lub FAŁSZ.

Składnia VBA IIF

Spójrz na składnię funkcji IIF.

  • Wyrażenie: To nic innego jak test logiczny, który chcielibyśmy przeprowadzić.
  • Część Ture: Jeśli test logiczny jest PRAWDA, to jaki powinien być wynik części PRAWDA.
  • Część fałszywa: jeśli test logiczny ma wynik FAŁSZ, to jaki powinien być wynik części FAŁSZ.

Możemy wprowadzić własne wyniki z częściami PRAWDA i FAŁSZ. Chociaż argumenty wyglądają podobnie do warunku JEŻELI, będzie to nieco inne. Zobaczymy to na przykładach funkcji Excel VBA IIF.

Jedną z kluczowych różnic między zwykłym „IF” a tym „IIF” jest to, że możemy zredukować kod do jednej linii za pomocą IIF, gdzie przy warunku IF uzyskanie tego samego wyniku zajmuje co najmniej 5 linii.

Przykład funkcji VBA IIF

Poniżej znajdują się przykłady funkcji VBA IIF w programie Excel.

Możesz pobrać ten szablon VBA IIF Excel tutaj - szablon VBA IIF Excel

Przykład 1 - VBA IIF

Ok, zobaczymy jeden prosty przykład funkcji IIF. Teraz sprawdzimy, czy jedna liczba jest większa lub mniejsza niż inna liczba. Wykonaj poniższe kroki, aby napisać kod VBA.

Krok 1: Uruchom makro.

Krok 2: Zdefiniuj zmienną jako ciąg w VBA.

Kod:

 Sub IIF_Example () Dim FinalResult As String End Sub 

Krok 3: Zdefiniuj dwie dodatkowe zmienne jako długie w VBA.

Kod:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long End Sub 

Krok 4: Teraz dla zmiennej „Number1” przypisz wartość 105, a zmiennej „Number2” przypisz wartość 100.

Kod:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long Number1 = 105 Number2 = 100 End Sub 

Krok 5: Teraz do pierwszej zdefiniowanej zmiennej „FinalResult” przypiszemy wynik funkcji IIF. Więc otwórz IIF dla zmiennej.

Krok 6: Podaj wyrażenie jako Liczba1> Liczba2.

Krok 7: Teraz, jeśli wyrażenie jest PRAWDA, jaki powinien być wynik. Jako wynik przypiszę „Numer 1 jest większy niż Numer 2”.

Krok 8: Teraz, jeśli wyrażenie ma wartość FAŁSZ, jaki powinien być wynik. Jako wynik przypiszę „Numer 1 jest mniejszy niż Numer 2”.

Teraz wartość zmiennej będzie jedną z poniższych.

Jeśli prawda: „Liczba 1 jest większa niż liczba 2”

Jeśli fałsz: „Numer 1 jest mniejszy niż numer 2”

Krok 9: Pokażmy wynik w oknie komunikatu w VBA.

Kod:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long Number1 = 105 Number2 = 100 FinalResult = IIf (Number1> Number2, "Number 1 is Greater than Number 2", "Number 1 is Less than Number 2") MsgBox FinalResult End Sub 

Teraz uruchommy kod i zobaczmy wynik.

Ponieważ wartość liczby 1 jest równa 105, czyli większa niż wartość liczby 2 równa 100, otrzymaliśmy wynik jako „Liczba 1 jest większa niż liczba 2”. Ponieważ wyrażenie ma wartość TRUE, warunek IIF zwrócił ten wynik.

Przykład # 2 - IF vs IIF

Pewnie się zastanawiasz, jaka jest różnica między IF i IIF. Tak, istnieje różnica w kodowaniu. Na przykład spójrz na kod warunku JEŻELI.

Kod:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long Number1 = 105 Number2 = 100 If Number1> Number2 Then MsgBox "Numer 1 jest większy niż 2" Else MsgBox "Numer 1 jest mniejszy niż numer 2" End If Napis końcowy 

Używając IF najpierw zastosowaliśmy test logiczny.

 Jeśli Numer1> Numer2 Wtedy 

Następnie, jeśli test logiczny jest prawdziwy, zastosowaliśmy wynik.

MsgBox „Numer 1 jest większy niż numer 2”

Następnie, jeśli test logiczny jest fałszywy, zastosowaliśmy różne wyniki.

MsgBox „Numer 1 jest mniejszy niż numer 2”

Obie funkcje zwracają ten sam wynik, ale z IIF możemy kodować tylko w jednym wierszu, podczas gdy instrukcja IF wymaga wielu wierszy.

Przykład # 3 - Zagnieżdżony warunek IIF VBA

Like how we use nested IF to test multiple conditions similarly we can use multiple IIF as well. Take a look at the below code.

Code:

 Sub IIF_Example2() Dim FinalResult As String Dim Marks As Long Marks = 98 FinalResult = IIf(Marks > 90, "Dist", IIf(Marks > 80, "First", IIf(Marks > 70, "Second", IIf(Marks > 60, "Third", "Fail")))) MsgBox FinalResult End Sub 

The above IIF condition tests five logical tests and returns the result accordingly.