VBA IIF - Jak používat funkci VBA IIF v Excelu? (Šablona ke stažení)

Obsah:

Anonim

Funkce Excel VBA IIF

VBA IIF (také známý jako Immediate If) je příkaz, který jste mohli často vidět při programování pod VBA a vytváření maker. Je podobná funkci IF aplikace Excel, kde zapisujete logickou podmínku a dává dva výstupy, pokud je podmínka true a podmínka je false. Pokud se na to díváte jako na funkci podobnou VBA IF, kterou používáme k hodnocení logických testů a podmínek, mýlíte se. Zdá se, že se blíží VBA Pokud a v ideálním případě lze říci, že mezi nimi mají během provádění opravdu malý rozdíl. V tomto článku se dozvíte více informací o prohlášení VBA IIF a o tom, jak je používat v našem každodenním programovacím životě, abychom usnadnili naše úkoly.

Příkaz VBA IIF funguje podobně jako příkaz Excel IF. Zkontroluje poskytnutou podmínku nebo logický příkaz a vydá výstup buď spojený s podmínkou PRAVDA, nebo pokud je podmínkou FALSE.

Syntaxe IIF v Excelu VBA

Syntaxe funkce VBA IIF v Excelu je následující:

Kde,

  • Výraz: je logická podmínka, kterou jsme chtěli vyhodnotit v rámci funkce IIF
  • TruePart: je hodnota / výstup, který očekáváme, když je logická podmínka / výraz PRAVDA.
  • FalsePart: je hodnota / výstup, který očekáváme, když je logická podmínka / výraz FALSE.

Jak používat Excel VBA IIF?

Nyní vyzkoušejte několik příkladů na VBA IIF v Excelu.

Tuto šablonu VBA IIF Excel si můžete stáhnout zde - VBA IIF Excel Template

Vezměme si jednoduchý příklad, abychom viděli, jak IIF funguje pod Microsoft VBA.

Příklad č. 1 - VBA IIF

Krok 1: Otevřete editor jazyka Visual Basic (VBE). Přejděte na kartu Vložit a klikněte na Modul . Přidá nový modul pod VBE.

Krok 2: Definujte nový dílčí postup, který může v tomto modulu držet vaše makro.

Kód:

 Sub IIf_Ex1 () End Sub 

Krok 3: Definujte dvě nové proměnné Var_1 jako Long a Result s datovým typem jako variantou.

Kód:

 Sub IIf_Ex1 () Dim var_1 Jako výsledek dlouhého dim jako Boolean End Sub 

Krok 4: Přiřaďte číselnou hodnotu Var_1, abychom tuto proměnnou mohli použít ke kontrole logických podmínek IIF.

Kód:

 Sub IIf_Ex1 () Dim var_1 Jako dlouhý Dim Výsledek jako Boolean var_1 = 5 End Sub 

Krok 5: Pomocí proměnné Result uložte logickou podmínku IIF, za níž se chystáme zkontrolovat, zda je hodnota přiřazená k Var_1 větší nebo rovná 10.

Kód:

 Sub IIf_Ex1 () Dim var_1 Jako dlouhý Dim Výsledek jako Booleovský var_1 = 5 Výsledek = IIf (var_1> = 10, True, False) End Sub 

Krok 6: Nyní pomocí Debug.Print vytiskněte výsledek podmínky IIF v podokně prohlížeče okamžitých výsledků.

Kód:

 Sub IIf_Ex1 () Dim var_1 Jako dlouhý dim výsledek jako booleovský var_1 = 5 Výsledek = IIf (var_1> = 10, True, False) Debug.Print Výsledek End Sub 

Krok 7: Spusťte tento kód stisknutím klávesy F5 nebo Run v horní části podokna a podívejte se na výstup v podokně Okamžitý výstup.

Příklad č. 2 - VBA IIF

Předpokládejme, že máme data v listu takto:

Vše, co chceme, je výstup ve sloupci B tak, že číslo je sudé nebo liché.

Krok 1: Definujte nový dílčí postup ve VBE.

Kód:

 Sub IIF_Ex2 () End Sub 

Krok 2: Definujte dvě proměnné „a“ a „čísla“ jako dlouhé.

Kód:

 Sub IIF_Ex2 () Dim a As Long Dim Number As Long End Sub 

Krok 3: Spusťte smyčku For, ve které chceme smyčky všechny hodnoty přítomné v buňce A2: A11. Smyčka začne od 2 do 11 (protože máme záhlaví v řádku 1 pro sloupec A a B).

Kód:

 Sub IIF_Ex2 () Dim a As Long Dim Number Tak Long Pro a = 2 až 11 End Sub 

Krok 4: Použijte číselnou proměnnou definovanou dříve k uložení všech čísel ze sloupce A, která se mění v daném rozsahu pomocí operátoru přiřazení (A2: A11). Použijte následující řádek kódu.

Number = Sheet1.Range („A“ & a)

Kód:

 Sub IIF_Ex2 () Dim a As Long Dim Number As Long Pro a = 2 to 11 Number = Sheet1.Range ("A" & a) End Sub 

Tento řádek kódu umožňuje VBA procházet všechny řádky ve sloupci A z “List1” v Excelu jeden po druhém pod For smyčky.

Krok 5: Pomocí IIF zkontrolujte, zda je každá hodnota buňky sudá nebo lichá, a uložte výsledky pod každou buňku sloupce B. Úkol provede následující řádek kódu.

List1.Range (“B” & a). Hodnota = IIf (Number Mod 2 = 0, “Even”, “Liché”)

Kód:

 Sub IIF_Ex2 () Dim a As Long Dim Number As Long Pro a = 2 To 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, „Sudý“, „Lichý“) End Sub 

Zde v tomto řádku chceme, aby výsledky byly uloženy pod každou buňkou sloupce B z List1. Proto jsme použili „List1.Range (“ B ”& i) .Value” na levé straně kusu kódu. Použili jsme IIF ke kontrole, zda je číslo dělitelné 2 pomocí Mod (operátor Modulo pod VBA). Nakonec chceme výstup, zda je číslo sudé nebo liché ve sloupci B. Proto jsou tyto dvě hodnoty uvedeny v příkazu IIF.

Krok 6: Uzavřete příkaz For loop with Next, aby se po každé iteraci systém posunul směrem k další buňce v listu, dokud nedosáhne 11. řádku.

Kód:

 Sub IIF_Ex2 () Dim a As Long Dim Number As Long Pro a = 2 To 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, „Sudý“, „Lichý“) Next End Sub 

Krok 7: To je vše. Spusťte tento kód stisknutím klávesy F5 nebo Spustit umístěné na horním panelu VBE. Po spuštění tohoto makra uvidíte výstup níže v listu 1 (pojmenovaný jako „Příklad_1“) sešitu Excel.

Příklad č. 3 - VBA IIF

Nyní uvidíme vnořený příkaz IIF:

To je stejný způsob, jak vnoříme více IF podmínek v jedné smyčce.

Předpokládejme stejná data jako v předchozím případě. Chtěli jsme jen napsat kód, který nám umožní rozlišovat mezi čísly takto:

  • Pokud je číslo mezi 1 a 3 (3 zahrnuto), mělo by se ve sloupci B uvést „Malé“.
  • Pokud je číslo mezi 4 a 6 (zahrnuto 6), mělo by se ve sloupci B uvést „Střední“.
  • Pokud je číslo mezi 7 a 10 (včetně 10), mělo by se ve sloupci B uvést „Velké“.

Napíšeme kód pro tento typ IIF:

Krok 1: Definujte nový dílčí postup ve vašem VBE, který může pojmout vaše makro.

Kód:

 Sub NestedIf () End Sub 

Postupujte podle kroků 2 až 4 stejně jako ve výše uvedeném příkladu (příklad 2 v tomto článku). Zahrnuje definování proměnných a přidání všech čísel přítomných ve sloupci A pod smyčku For.

Krok 5: Pomocí následujícího kódu získejte požadovaný výstup.

Kód:

 Sub NestedIf () Dim číslo tak dlouho, pro a = 2 až 11 číslo = Sheet2.Range ("A" & a) Sheet2.Range ("B" & a) .Value = IIf (Number = 7, "Large", " Střední “)) End Sub 

Krok 6: Zavřete příkaz For loop with Next a spusťte tento kód pomocí tlačítka F5 nebo Run, které se nachází na horní pásce pod VBE. Po spuštění kódu uvidíte výstup níže:

Zde se v tomto kódu používá vnořená IIF. V rámci prvního IIF dostáváme, co by se mělo tisknout ve sloupci B, když jsou čísla mezi 1 a 3. Ve druhém IIF jsme se zmínili, co by se mělo tisknout ve sloupci B, pokud jsou čísla větší nebo rovno 7 a pod stejný IIF, poskytli jsme, co by mělo být vytištěno ve sloupci B, pokud čísla nejsou mezi 1 až 3 a 7 až 10.

Tímto způsobem můžeme přidat více IIF do stejného kódu a vnořit je. Toto je z tohoto článku. Pojďme to zabalit s některými věcmi, které je třeba mít na paměti.

Co si pamatovat

  • IIF vždy vyhodnocuje obě části (PRAVDA a NEPRAVDA) pro konkrétní stav. Část FALSE se však vytiskne pouze v případě, že nic není PRAVDA.
  • Psaní je zkráceno než u standardních prohlášení If-Else.
  • Není známo, proto někteří uživatelé nemusí rozumět vašemu kódu, pokud jste místo konvenčního If-Else použili IIF.

Doporučené články

Toto je průvodce VBA IIF. Zde diskutujeme o tom, jak používat Excel VBA IIF spolu s praktickými příklady a šablonou Excel ke stažení. Můžete si také prohlédnout naše další doporučené články -

  1. Práce s aktivní buňkou VBA
  2. Odstranění řádku ve VBA
  3. Jak používat Excel VBA Transpose?
  4. Jak opravit chybu 1004 pomocí VBA