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 ExcelPrzykł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.