Ten samouczek pokaże Ci, jak używać zagnieżdżonych instrukcji If w VBA
Jeśli instrukcje pozwalają przetestować pojedynczy warunek w VBA, aby sprawdzić, czy warunek jest prawdziwy lub fałszywy, i w zależności od odpowiedzi, kod przesunie się w kierunku stwierdzenia prawda lub fałszywego.
Jedno oświadczenie IF
1234567891011 | Podtest JeśliDim x jako liczba całkowitax = 10Jeśli x = 10 to'jeśli x wynosi 10, warunek jest prawdziwyMsgBox x to 10"W przeciwnym razie'jeśli x nie jest równe 10, warunek jest fałszywyMsgbox "x to nie 10"Zakończ, jeśliNapis końcowy |
Wyjaśnienie zagnieżdżonych IF
Zagnieżdżone Jeżeli pozwala na umieszczenie wielu warunków WEWNĄTRZ każdego wyrażenia Prawda i/lub Fałsz oryginalnego Jeżeli.
1234567891011121314151617181920212223242526 | Test podrzędny zagnieżdżony, jeśli()Dim x jako liczba całkowitaDim y jako liczba całkowitaDim z jako liczba całkowitax = 10y = 9z = 8Jeśli x = 10 to'jeśli x wynosi 10, warunek jest prawdziwy, więc przetestuj yJeśli y = 8, toMsgBox "y to 9"W przeciwnym razie'jeśli y nie jest równe 10, warunek jest fałszywyMsgbox "y nie jest 9"Zakończ, jeśliW przeciwnym razie'jeśli x nie wynosi 10, to warunek jest fałszywy, więc przetestujmy dla zJeśli z = 8, toMsgBox "z to 8"W przeciwnym razie'jeśli z nie jest 8, warunek jest fałszywyMsgbox "z to nie 10"Zakończ, jeśli'inny End If jest potrzebny do zamknięcia oryginału, jeśli'Zakończ, jeśliNapis końcowy |
Wcięcie kodu podczas pisania jest zawsze dobrą praktyką, ponieważ sprawia, że kod jest łatwy do odczytania i naśladowania, gdy musisz do niego wrócić na pewnym etapie lub gdy inny programista musi go przeczytać.
Moglibyśmy również stworzyć funkcję zaprojektowaną przez użytkownika (UDF) i wywołać wartości niektórych komórek z Excela do funkcji za pomocą parametrów.
1234567891011121314151617181920 | Funkcja GetIf(x jako Integer, y jako Integer, z jako Integer) jako StringJeśli x = 10 to'jeśli x wynosi 10, warunek jest spełniony, więc przetestuj yJeśli y = 8, toGetIf= "y to 9"W przeciwnym razie'jeśli y nie jest równe 10, warunek jest fałszywyGetIf="y nie jest 9"Zakończ, jeśliW przeciwnym razie'jeśli x nie wynosi 10, to warunek jest fałszywy, więc przetestujmy dla zJeśli z = 8, toGetIf="z to 8"W przeciwnym razie'jeśli z nie jest 8, warunek jest fałszywyGetIf="z nie jest 10"Zakończ, jeśli'inny End If jest potrzebny do zamknięcia oryginału, jeśli'Zakończ, jeśliKoniec funkcji |
Zagnieżdżony, jeśli praktyczny przykład
Rozważ następującą funkcję:
12345678910111213141516171819202122 | Funkcja GetDiscount (dblPrice jako Double) jako DoubleJeśli cena dbl >= 1000 Wtedy'jeśli cena jest większa niż 1000, przyznaj rabatJeśli cena dbl >= 2000 Wtedy'jeśli jest większy niż 2000, daj 10% zniżkiGetDiscount = dblCena * 0,1W przeciwnym razie'w przeciwnym razie daj 5% rabatuGetDiscount = dblCena * 0,05Zakończ, jeśli„jeżeli cena nie jest większa niż 1000”W przeciwnym razie'jeśli jest większa niż 500, daj 2,5% rabatuJeśli cena dbl >= 500 WtedyGetDiscount = dblCena * 0,025W przeciwnym razie„w przeciwnym razie nie ma zniżki”UzyskajZniżkę = 0Zakończ, jeśli'inny End If jest potrzebny do zamknięcia oryginału, jeśli'Zakończ, jeśliKoniec funkcji |
Korzystając z tej funkcji w arkuszu Excela, możemy przetestować, aby zobaczyć całkowitą cenę zamówienia i zastosować różne rabaty w zależności od tej sumy.
Programowanie VBA | Generator kodu działa dla Ciebie!
Korzystanie z ElseIf
ElseIf umożliwia nam uproszczenie kodu, ponieważ przesunął się on do drugiej instrukcji if, jeśli pierwsza zwróci false.
12345678910111213141516 | Funkcja GetDiscount(dblPrice jako Double) jako Double„użyj innego, jeśli zmniejszysz pisanie kodu”Jeśli cena dbl >= 2000 WtedyGetDiscount = dblCena * 0,1InaczejJeżeli dblCena >= 1000 WtedyGetDiscount = dblCena * 0,075InaczejJeżeli dblCena >= 500 WtedyGetDiscount = dblCena * 0,05InaczejJeżeli dblCena >= 200 WtedyGetDiscount = dblCena * 0,025InaczejJeżeli dblCena >= 100 WtedyGetRabat = dblCena * 0,01W przeciwnym razieUzyskajZniżkę = 0Zakończ, jeśliKoniec funkcji |
Korzystanie z opisu przypadku
Możemy również użyć Case Statement, aby osiągnąć ten sam efekt.
1234567891011121314151617 | Funkcja GetDiscount(dblPrice jako Double) jako DoubleWybierz przypadek dblCena„ten opis przypadku ma 6 różnych poziomów rabatu”Przypadek jest >= 2000GetDiscount = dblCena * 0,1Sprawa jest >= 1000GetDiscount = dblCena * 0,075Sprawa jest >= 500GetDiscount = dblCena * 0,05Przypadek jest >= 200GetDiscount = dblCena * 0,025Sprawa jest >= 100GetDiscount = dblCena * 0,01Przypadek innyUzyskajZniżkę = 0Koniec WybierzKoniec funkcji |