Tento tutoriál vám ukáže, jak používat vnořené příkazy If ve VBA
Pokud vám příkazy umožňují otestovat jednu podmínku ve VBA, abyste zjistili, zda je podmínka True nebo False, a v závislosti na odpovědi se kód přesune ve směru pravdivého nebo nepravdivého příkazu.
Jedno prohlášení IF
1234567891011 | Dílčí test PokudDim x jako celé číslox = 10Pokud x = 10, pak„Pokud x je 10, podmínka je pravdiváMsgBox x je 10 "Jiný„Pokud x není 10, podmínka je nepravdiváMsgbox "x není 10"Konec IfEnd Sub |
Vnořené IF vysvětlil
Vnořené If vám umožňuje vložit VNITŘNÍ podmínky každého z pravdivých a/nebo nepravdivých tvrzení původního If.
1234567891011121314151617181920212223242526 | Dílčí testNestedIf ()Dim x jako celé čísloDim y jako IntegerDim z jako Integerx = 10y = 9z = 8Pokud x = 10, pak'pokud x je 10, podmínka je pravdivá, takže test pro yPokud y = 8, pakMsgBox „y je 9“Jiný„Pokud y není 10, podmínka je nepravdiváMsgbox „y není 9“Konec IfJiný'pokud x není 10, pak je podmínka nepravdivá, tak pojďme' otestovat na zPokud z = 8, pakMsgBox "z je 8"Jiný„Pokud z není 8, podmínka je nepravdiváMsgbox "z není 10"Konec If'jiný konec Je -li třeba zavřít originál, pokudKonec IfEnd Sub |
Odsazení kódu při psaní je vždy dobrá praxe, protože usnadňuje jeho čtení a dodržování, když se k němu v určité fázi budete muset vrátit, nebo když ho musí přečíst jiný programátor.
Mohli bychom také vytvořit uživatelsky navrženou funkci (UDF) a zavolat hodnoty některých buněk z Excelu do funkce pomocí parametrů.
1234567891011121314151617181920 | Funkce GetIf (x jako celé číslo, y jako celé číslo, z jako celé číslo) jako řetězecPokud x = 10, pak'pokud x je 10, podmínka je pravdivá, takže test pro yPokud y = 8, pakGetIf = "y je 9"Jiný„Pokud y není 10, podmínka je nepravdiváGetIf = "y není 9"Konec IfJiný'pokud x není 10, pak je podmínka nepravdivá, tak pojďme' otestovat na zPokud z = 8, pakGetIf = "z je 8"Jiný„pokud z není 8, podmínka je nepravdiváGetIf = "z není 10"Konec If'jiný konec Je -li třeba zavřít originál, pokudKonec IfKoncová funkce |
Vnořený, pokud je to praktický příklad
Zvažte následující funkci:
12345678910111213141516171819202122 | Funkce GetDiscount (dblCena jako dvojnásobek) jako dvojnásobekPokud dblPrice> = 1000 Pak„Pokud je cena vyšší než 1 000, přiřaďte slevuPokud dblPrice> = 2000 Pak„Pokud je vyšší než 2000, poskytněte 10% slevuGetDiscount = dblPrice * 0,1Jiný'jinak poskytněte 5% slevuGetDiscount = dblPrice * 0,05Konec If„Pokud cena není vyšší než 1 000Jiný„Pokud je vyšší než 500, poskytněte 2,5% slevuPokud dblPrice> = 500 PakGetDiscount = dblPrice * 0,025Jiný„jinak žádná slevaZískejte slevu = 0Konec If'jiný konec Je -li třeba zavřít originál, pokudKonec IfKoncová funkce |
Pomocí této funkce v listu aplikace Excel můžeme otestovat celkovou cenu objednávky a v závislosti na této celkové částce uplatnit různé slevy.
Programování VBA | Generátor kódu pracuje pro vás!
Pomocí ElseIf
ElseIf nám umožňuje zjednodušit váš kód, protože se pouze přesunul do druhého příkazu if, pokud první vrátí hodnotu false.
12345678910111213141516 | Funkce GetDiscount (dblCena jako dvojnásobek) jako dvojnásobek'use else if to cut on psaní kóduPokud dblPrice> = 2000 PakGetDiscount = dblPrice * 0,1ElseIf dblPrice> = 1000 PotomGetDiscount = dblPrice * 0,075ElseIf dblPrice> = 500 PakGetDiscount = dblPrice * 0,05ElseIf dblPrice> = 200 PotomGetDiscount = dblPrice * 0,025ElseIf dblPrice> = 100 PotomGetDiscount = dblPrice * 0,01JinýZískejte slevu = 0Konec IfKoncová funkce |
Použití prohlášení o případu
Můžeme také použít Case Case k dosažení stejného účinku.
1234567891011121314151617 | Funkce GetDiscount (dblCena jako dvojnásobek) jako dvojnásobekVyberte Case dblPrice„tento případ má 6 různých úrovní slevPřípad je> = 2000GetDiscount = dblPrice * 0,1Případ je> = 1000GetDiscount = dblPrice * 0,075Případ je> = 500GetDiscount = dblPrice * 0,05Případ je> = 200GetDiscount = dblPrice * 0,025Případ je> = 100GetDiscount = dblPrice * 0,01Případ jinakZískejte slevu = 0Konec VybratKoncová funkce |