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:
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:
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.
