Viacnásobné (vnorené) vyhlásenia VBA

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

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave