VBA If, ElseIf, Else (Ultimate Guide to If Statements)

Vyhlásenie VBA

Ak potom

VBA If Statements vám umožňujú otestovať, či sú výrazy TRUE alebo FALSE, spustením iného kódu na základe výsledkov.Pozrime sa na jednoduchý príklad:
1 Ak je rozsah („a2“). Hodnota> 0, potom rozsah („b2“). Hodnota = „kladné“
Testuje sa, či je hodnota v rozsahu A2 väčšia ako 0. Ak je to tak, nastavenie rozsahu B2 sa rovná „pozitívne“Poznámka: Pri testovaní podmienok použijeme porovnávacie operátory =,>, <,, =. Podrobnejšie o nich budeme diskutovať neskôr v článku.Tu je syntax jednoduchého jednoriadkového príkazu If:
1 Ak [výraz_testu], potom [akcia]
Na uľahčenie čítania môžete použiť znak Pokračovanie v riadku (podčiarkovník) na rozšírenie príkazov If na dva riadky (ako sme to urobili na obrázku vyššie):
12 Ak [výraz_testu], potom _[akcia]
12 Ak je rozsah („a2“). Hodnota> 0, potom _Rozsah („b2“). Hodnota = „Kladné“

Koniec Ak

Vyššie uvedený „jednoriadkový“ príkaz if funguje dobre, keď testujete jednu podmienku. Keďže sa však vaše vyhlásenia IF stávajú komplikovanejšie pri splnení viacerých podmienok, budete musieť na koniec príkazu if pridať „End If“:
123 Ak je rozsah („a2“). Hodnota> 0 PotomRozsah („b2“). Hodnota = „Kladné“Koniec Ak

Syntax je tu:

123 Ak [výraz_testu], potom[akcia]Koniec Ak

End If znamená koniec príkazu if.

Teraz pridáme ElseIF:

ElseIF - Viaceré podmienky

ElseIf je pridaný k existujúcemu príkazu If. Inak Testuje, či je splnená podmienka IBA ak neboli splnené predchádzajúce podmienky.V predchádzajúcom prípade sme testovali, či je hodnota bunky kladná. Teraz tiež otestujeme, či je hodnota bunky záporná, pomocou ElseIf:
12345 Ak je rozsah („a2“). Hodnota> 0 PotomRozsah („b2“). Hodnota = „Kladné“Rozsah ElseIf ("a2"). Hodnota <0 potomRozsah („b2“). Hodnota = „Záporné“Koniec Ak

Na testovanie viacerých podmienok môžete použiť viacero ElseIfs:

1234567891011 Sub If_Multiple_Conditions ()Ak je rozsah („a2“). Hodnota = „mačka“Rozsah ("b2"). Hodnota = "Mňau"Rozsah ElseIf („a2“). Hodnota = „pes“ PotomRozsah ("b2"). Hodnota = "Woof"Iný rozsah („a2“). Hodnota = „Kačica“Rozsah („b2“). Hodnota = „Šarlatán“Koniec AkKoniec pod

Teraz pridáme príponu Inak:

Inak

The Inak pobeží ak neboli splnené žiadne ďalšie predchádzajúce podmienky.

Náš príklad dokončíme použitím príkazu Else na označenie, že ak hodnota bunky nie je kladná alebo záporná, musí byť nulová:

1234567 Ak je rozsah („a2“). Hodnota> 0 PotomRozsah („b2“). Hodnota = „Kladné“Rozsah ElseIf ("a2"). Hodnota <0 potomRozsah („b2“). Hodnota = „Záporné“InakRozsah ("b2"). Hodnota = "Nula"Koniec Ak

Ak-inak

Najbežnejším typom príkazu If je jednoduchý príkaz If-Else:

1234567 Sub If_Else ()Ak je rozsah („a2“). Hodnota> 0 PotomRozsah („b2“). Hodnota = „Kladné“InakRozsah („b2“). Hodnota = „Nie je pozitívne“Koniec AkKoniec pod

Vnorené IF

Príkazy môžete tiež „vnoriť“ do seba.

1234567891011 Sub Nested_Ifs ()Ak je rozsah („a2“). Hodnota> 0 PotomRozsah („b2“). Hodnota = „Kladné“InakAk je rozsah („a2“). Hodnota <0 potomRozsah („b2“). Hodnota = „Záporné“InakRozsah ("b2"). Hodnota = "Nula"Koniec AkKoniec AkKoniec pod

IF - Alebo, A, Xor, nie

Ďalej budeme diskutovať o logických operátoroch: Or, And, Xor, Not.

Ak Or

The Alebo testy operátora, ak je splnená aspoň jedna podmienka.

Nasledujúci kód otestuje, či je hodnota v rozsahu A2 nižšia ako 5 000 alebo väčšia ako 10 000:

123 Ak je rozsah („a2“). Hodnota 10 000 PotomRozsah („b2“). Hodnota = „Mimo rozsah“Koniec Ak

Do jedného riadka môžete zahrnúť viacero Ors:

123 Ak je rozsah („a2“). Hodnota 10 000 alebo rozsah („a2“). Hodnota = 9999 PotomRozsah („b2“). Hodnota = „Mimo rozsah“Koniec Ak

Ak sa chystáte použiť viacero Ors, odporúča sa použiť znak na pokračovanie riadka, aby bol váš kód čitateľnejší:

123456 Ak je rozsah („a2“). Hodnota <5 000 alebo _Rozsah („a2“). Hodnota> 10 000 alebo _Rozsah („a2“). Hodnota = 9999 PotomRozsah („b2“). Hodnota = „Mimo rozsah“Koniec Ak

Ak A

Operátor And vám umožňuje otestovať, či VŠETKY podmienky sú splnené.

123 Ak je rozsah („a2“). Hodnota> = 5 000 a rozsah („a2“). Hodnota <= 10 000 PotomRozsah ("b2"). Hodnota = "V rozsahu"Koniec Ak

Ak Xor

Operátor Xor vám umožňuje vyskúšať, či je splnená presne jedna podmienka. Ak sú splnené nulové podmienky, Xor vráti FALSE, ak sú splnené dve alebo viac podmienok, Xor tiež vráti false.

Málokedy som videl Xor používaný v programovaní VBA.

Ak nie

Operátor Not sa používa na konverziu FALSE na TRUE alebo TRUE na FALSE:

123 Sub IF_Not ()MsgBox nie je (pravda)Koniec pod

Všimnite si, že operátor Not vyžaduje na prepnutie zátvorky okolo výrazu.

Operátor Not je možné použiť aj na príkazy If:

123 Ak nie (rozsah („a2“). Hodnota> = 5 000 a rozsah („a2“). Hodnota <= 10 000) PotomRozsah („b2“). Hodnota = „Mimo rozsah“Koniec Ak

Ak porovnania

Pri porovnávaní zvyčajne použijete jeden z porovnávacích operátorov:

Operátor porovnávania Vysvetlenie
= Rovná
Nie je to rovnaké
> Väčší než
>= Väčší alebo rovný
< Menej ako
<= Menej ako alebo rovno

Môžete však použiť aj ľubovoľný výraz alebo funkciu čo má za následok PRAVDU alebo NEPRAVDU

If - booleovská funkcia

Pri vytváraní výrazov pre príkazy If môžete použiť aj akúkoľvek funkciu, ktorá generuje hodnotu TRUE alebo False. VBA má niekoľko z týchto funkcií:

Funkcia Popis
IsDate Ak je výraz platným dátumom, vráti hodnotu TRUE
Je prázdny Vyhľadajte prázdne bunky alebo nedefinované premenné
IsError Skontrolujte chybové hodnoty
IsNull Skontrolujte hodnotu NULL
Je číselné Skontrolujte číselnú hodnotu

Môžu sa nazývať takto:

1 If IsEmpty (Range ("A1"). Value) Then MsgBox "Cell Empty"

Excel má tiež mnoho ďalších funkcií, ktoré je možné zavolať pomocou WorksheetFunction. Tu je príklad funkcie programu Excel IsText:

12 Ak Application.WorksheetFunction.IsText (rozsah ("a2"). Hodnota) Potom _MsgBox „Bunka je text“

Môžete si tiež vytvoriť vlastné funkcie definované používateľom (UDF). Ďalej vytvoríme jednoduchú booleovskú funkciu, ktorá vráti hodnotu TRUE. Potom túto funkciu nazveme v našom príkaze If:

1234567891011 Sub If_Function ()Ak TrueFunction PotomMsgBox „True“Koniec AkKoniec podFunkcia TrueFunction () Ako logická hodnotaTrueFunction = TrueKoncová funkcia

Porovnanie textu

Môžete tiež porovnať text podobný porovnaniu čísel:
1 Msgbox "a" = "b"
1 Msgbox "a" = "a"
Pri porovnávaní textu si musíte pamätať na „veľké“ alebo malé písmená. VBA štandardne považuje písmená s rôznymi písmenami za nezhodné. Inými slovami, „A“ „a“.Ak chcete, aby VBA ignorovala malé a veľké písmena, musíte do hornej časti modulu pridať deklaráciu porovnávania textu s možnosťami:
1 Možnosť Porovnať text

Po vyhlásení „A“ = „a“:
12345 Možnosť Porovnať textSub if_Text ()MsgBox "a" = "A"Koniec pod

VBA Ak sa vám páči

Operátor VBA Like vám umožňuje nepresné porovnávania textu. Ak sa chcete dozvedieť viac, kliknite na odkaz „Páči sa mi to ako operátor“, ale nižšie uvedieme základný príklad:

12345678 Dim strName ako reťazecstrName = "Pán Charles"Ak strName ako „Pán*“ PotomMsgBox „True“InakMsgBox „False“Koniec Ak

Tu používame zástupný znak s hviezdičkou „*“. * Znamená ľubovoľný počet ľubovoľných znakov. Takže vyššie uvedený príkaz If vráti TRUE. Operátor Like je extrémne výkonný, ale často málo používaný nástroj na prácu s textom.

Ak slučky

Smyčky VBA vám umožňujú opakovať akcie. Kombinácia IF-ELSE so slučkami je skvelý spôsob, ako rýchlo spracovať mnoho výpočtov.

Pokračujúc v našom pozitívnom / negatívnom príklade, pridáme pre každú slučku, aby sa smyčka prešla celým radom buniek:

1234567891011121314 Sub If_Loop ()Dim Cell ako rozsahPre každú bunku v rozsahu („A2: A6“)Ak je Cell.Value> 0 PotomCell.Offset (0, 1) .Hodnota = "Pozitívne"ElseIf Cell.Value <0 PotomCell.Offset (0, 1) .Value = "Negative"InakCell.Offset (0, 1) .Hodnota = "Nula"Koniec AkĎalšia bunkaKoniec pod

Ak inak Príklady

Teraz si prejdeme niekoľko konkrétnejších príkladov.

Skontrolujte, či je bunka prázdna

Tento kód skontroluje, či je bunka prázdna. Ak je prázdna, bunku bude ignorovať. Ak nie je prázdny, zobrazí hodnotu bunky do bunky napravo:
1234567 Sub If_Cell_Empty ()Ak je rozsah („a2“). Hodnota „„ PotomRozsah („b2“). Hodnota = rozsah („a2“). HodnotaKoniec AkKoniec pod

Skontrolujte, či bunka obsahuje konkrétny text

Funkcia Instr testuje, či sa reťazec textu nachádza v inom reťazci. Pomocou príkazu If skontrolujte, či bunka obsahuje konkrétny text:
123 Ak je hodnota Instr (rozsah („A2“). „Text“)> 0, potomMsgbox „Našiel sa text“Koniec Ak

Skontrolujte, či bunka obsahuje text

Tento kód otestuje, či je bunka text:
1234567 Sub If_Cell_Is_Text ()Ak Application.WorksheetFunction.IsText (rozsah ("a2"). Hodnota) PotomMsgBox „Bunka je text“Koniec AkKoniec pod

Ak choď

Výsledok príkazu If môžete použiť na prechod na inú sekciu kódu.
12345678910 Sub IfGoTo ()If IsError (Cell.value) ThenChoď preskočiťKoniec Ak„Nejaký kódPreskočiť:Koniec pod

Ak je bunka prázdna, odstráňte riadok

Pomocou ifs a slučiek môžete otestovať, či je bunka prázdna, a ak je to tak, odstrániť celý riadok.
123456789 Sub DeleteRowIfCellBlank ()Dim Cell as RangePre každú bunku v rozsahu („A2: A10“)Ak Cell.Value = "" Potom Cell.EntireRow.DeleteĎalšia bunkaKoniec pod

Ak MessageBox áno / nie

Pomocou schránok správ VBA môžete používateľa požiadať, aby si vybral z niekoľkých možností. Pole so správou Áno / Nie požiada používateľa, aby vybral Áno alebo Nie. Do postupu môžete pridať pole so správou Áno / Nie, aby sa používateľ opýtal, či chce v procedúre pokračovať alebo nie. Vstup používateľa zvládnete pomocou príkazu If.Tu je pole správ Áno/Nie v praxi:
123456789101112 Sub MsgBoxVariable ()Dim odpoveď ako celé čísloanswer = MsgBox („Chcete pokračovať?“, vbQuestion + vbYesNo)Ak odpoveď = vbÁno PotomMsgBox „Áno“InakMsgBox „Nie“Koniec AkKoniec pod

VBA If, ElseIf, Else in Access VBA

Funkcie If, ​​ElseIf a Else fungujú v programe Access VBA úplne rovnako ako v programe Excel VBA.

Príkaz If môžete použiť na kontrolu, či v súprave záznamov existujú záznamy.

wave wave wave wave wave