Wielokrotne (zagnieżdżone) instrukcje VBA

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

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave