VBA Vícenásobné (vnořené) příkazy If

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

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave