Tento tutoriál vám ukáže, ako používať vnorené príkazy If vo VBA
Ak vám príkazy umožňujú testovať jednu podmienku vo VBA, aby ste zistili, či je podmienka pravdivá alebo nepravdivá, a v závislosti od odpovede sa kód posunie v smere pravdivého alebo nepravdivého tvrdenia.
Jedno vyhlásenie IF
1234567891011 | Vedľajší test AkDim x ako celé číslox = 10Ak x = 10, potom„Ak x je 10, podmienka je pravdiváMsgBox x je 10 "Inak„Ak x nie je 10, podmienka je falošnáMsgbox "x nie je 10"Koniec AkKoniec pod |
Vnorené IF vysvetlené
Vnorený if vám umožňuje vložiť VNÚTRI do každého z pravdivých a/alebo nepravdivých tvrdení pôvodného If.
1234567891011121314151617181920212223242526 | Sub TestNestedIf ()Dim x ako celé čísloDim y ako celé čísloDim z ako celé číslox = 10y = 9z = 8Ak x = 10, potom„Ak x je 10, podmienka je pravdivá, takže vyskúšajte yAk y = 8, potomMsgBox „y je 9“Inak„Ak y nie je 10, podmienka je falošnáMsgbox „y nie je 9“Koniec AkInak„Ak x nie je 10, potom je podmienka nepravdivá, takže“ testujme zAk z = 8, potomMsgBox "z je 8"Inak„Ak z nie je 8, podmienka je falošnáMsgbox "z nie je 10"Koniec Ak'ďalší koniec Ak je to potrebné na zatvorenie originálu, akKoniec AkKoniec pod |
Odsadenie kódu pri písaní je vždy osvedčený postup, pretože uľahčuje jeho čítanie a dodržiavanie, keď sa k nemu v určitej fáze musíte vrátiť alebo keď ho musí prečítať iný programátor.
Mohli by sme tiež vytvoriť funkciu navrhnutú používateľom (UDF) a pomocou parametrov zavolať hodnoty niektorých buniek z programu Excel do funkcie.
1234567891011121314151617181920 | Funkcia GetIf (x ako celé číslo, y ako celé číslo, z ako celé číslo) ako reťazecAk x = 10, potom„Ak x je 10, podmienka je pravdivá, takže vyskúšajte yAk y = 8, potomGetIf = "y je 9"Inak„Ak y nie je 10, podmienka je falošnáGetIf = "y nie je 9"Koniec AkInak„Ak x nie je 10, potom je podmienka nepravdivá, takže skúsme testnúť na zAk z = 8, potomGetIf = "z je 8"Inak„Ak z nie je 8, podmienka je falošnáGetIf = "z nie je 10"Koniec Ak'iný koniec Ak je to potrebné na zatvorenie originálu, akKoniec AkKoncová funkcia |
Vnorený, ak je to praktický príklad
Zvážte nasledujúcu funkciu:
12345678910111213141516171819202122 | Funkcia GetDiscount (dblCena ako dvojnásobok) ako dvojnásobokAk dblPrice> = 1000 Potom„Ak je cena väčšia ako 1 000, priraďte zľavuAk dblPrice> = 2000 Potom„Ak je hodnota vyššia ako 2 000, poskytnite 10% zľavuZískať zľavu = dblCena * 0,1Inak„V opačnom prípade poskytnite zľavu 5%Získať zľavu = dblCena * 0,05Koniec Ak„Ak cena nie je väčšia ako 1 000Inak„Ak je hodnota väčšia ako 500, poskytnite 2,5% zľavuAk dblPrice> = 500 PotomZískať zľavu = dblCena * 0,025Inak'inak žiadna zľavaZískať zľavu = 0Koniec Ak'ďalší koniec Ak je to potrebné na zatvorenie originálu, akKoniec AkKoncová funkcia |
Použitím tejto funkcie v hárku programu Excel môžeme otestovať celkovú cenu objednávky a v závislosti od tejto sumy uplatniť rôzne zľavy.
Programovanie VBA | Generátor kódu pracuje za vás!
Použitie ElseIf
ElseIf nám umožňuje zjednodušiť váš kód, pretože sa iba presunul do druhého príkazu if, ak prvý vráti hodnotu false.
12345678910111213141516 | Funkcia GetDiscount (dblCena ako dvojnásobok) ako dvojnásobok'use else if obmedziť písanie kóduAk dblPrice> = 2000 PotomZískať zľavu = dblCena * 0,1ElseIf dblPrice> = 1000 PotomZískať zľavu = dblCena * 0,075ElseIf dblPrice> = 500 PotomZískať zľavu = dblCena * 0,05ElseIf dblPrice> = 200 PotomZískať zľavu = dblCena * 0,025ElseIf dblPrice> = 100 PotomZískať zľavu = dblCena * 0,01InakZískať zľavu = 0Koniec AkKoncová funkcia |
Použitie prípadu
Na dosiahnutie rovnakého účinku môžeme použiť aj vyhlásenie o prípade.
1234567891011121314151617 | Funkcia GetDiscount (dblCena ako dvojnásobok) ako dvojnásobokVyberte položku Case dblPrice„Tento prípad má 6 rôznych úrovní zľavyPrípad je> = 2000Získať zľavu = dblCena * 0,1Prípad je> = 1000Získať zľavu = dblCena * 0,075Prípad je> = 500Získať zľavu = dblCena * 0,05Prípad je> = 200Získať zľavu = dblCena * 0,025Prípad je> = 100Získať zľavu = dblCena * 0,01Prípad inakZískať zľavu = 0Ukončiť výberKoncová funkcia |