Izjava VBA If

Ako tada
VBA Ako vam izrazi dopuštaju da provjerite jesu li izrazi TRUE ili FALSE, izvođenje različitog koda na temelju rezultata.Pogledajmo jednostavan primjer:
1 | Ako je raspon ("a2"). Vrijednost> 0 Zatim raspon ("b2"). Vrijednost = "pozitivno" |
Time se provjerava je li vrijednost u rasponu A2 veća od 0. Ako je tako, postavljanje raspona B2 na "Pozitivno"

Napomena: Prilikom testiranja uvjeta koristit ćemo operatore usporedbe =,>, <,, =. O njima ćemo detaljnije govoriti kasnije u članku.Evo sintakse za jednostavnu jednorednu naredbu If:
1 | Ako [test_expression] onda [akcija] |
Da biste olakšali čitanje, možete upotrijebiti znak za nastavak retka (podcrtavanje) za proširenje izjava If na dva retka (kao što smo učinili na gornjoj slici):
12 | Ako je [test_expression] tada _[akcijski] |
12 | Ako je raspon ("a2"). Vrijednost> 0 Tada _Raspon ("b2"). Vrijednost = "Pozitivno" |
Završi ako
Gornji izraz "jednostruki" ako radi dobro kada testirate jedan uvjet. No kako se vaše IF izjave kompliciraju s više uvjeta, morat ćete na kraj if naredbe dodati "End If":
123 | Ako je raspon ("a2"). Vrijednost> 0 TadaRaspon ("b2"). Vrijednost = "Pozitivno"Završi ako |
Evo sintaksa:
123 | Ako [test_expression] tada[akcijski]Završi ako |
Kraj If označava kraj naredbe if.
Sada dodajmo ElseIF:
ElseIF - Više uvjeta
ElseIf se dodaje postojećoj naredbi If. Inače provjerava je li uvjet ispunjen
SAMO ako prethodni uvjeti nisu ispunjeni.U prethodnom primjeru smo testirali je li vrijednost ćelije pozitivna. Sada ćemo također provjeriti je li vrijednost ćelije negativna pomoću ElseIf:
12345 | Ako je raspon ("a2"). Vrijednost> 0 TadaRaspon ("b2"). Vrijednost = "Pozitivno"Ostali raspon ("a2"). Vrijednost <0 ZatimRaspon ("b2"). Vrijednost = "Negativno"Završi ako |

Možete koristiti više ElseIfs za testiranje više uvjeta:
1234567891011 | Sub If_Multiple_Conditions ()Ako raspon ("a2"). Vrijednost = "mačka" ZatimRaspon ("b2"). Vrijednost = "Mjau"Ostali raspon ("a2"). Vrijednost = "Pas" ZatimRaspon ("b2"). Vrijednost = "Woof"Ostali raspon ("a2"). Vrijednost = "Patka" ZatimRaspon ("b2"). Vrijednost = "Šarlatan"Završi akoKraj podm |

Sada ćemo dodati an Drugo:
Drugo
The Drugo pokrenut će se ako nisu ispunjeni drugi prethodni uvjeti.
Završit ćemo naš primjer korištenjem Else da pokažemo da ako vrijednost ćelije nije pozitivna ili negativna, onda mora biti nula:
1234567 | Ako je raspon ("a2"). Vrijednost> 0 TadaRaspon ("b2"). Vrijednost = "Pozitivno"Ostali raspon ("a2"). Vrijednost <0 ZatimRaspon ("b2"). Vrijednost = "Negativno"DrugoRaspon ("b2"). Vrijednost = "Nula"Završi ako |
Ako-Ostalo
Najčešći tip If naredbe je jednostavan If-Else:
1234567 | Sub If_Else ()Ako je raspon ("a2"). Vrijednost> 0 TadaRaspon ("b2"). Vrijednost = "Pozitivno"DrugoRaspon ("b2"). Vrijednost = "Nije pozitivno"Završi akoKraj podm |

Ugniježđeni IF -ovi
Također možete "ugnijezditi" ako se izjave nalaze jedna u drugoj.
1234567891011 | Pod ugniježđeno_Ifs ()Ako je raspon ("a2"). Vrijednost> 0 TadaRaspon ("b2"). Vrijednost = "Pozitivno"DrugoAko je raspon ("a2"). Vrijednost <0 TadaRaspon ("b2"). Vrijednost = "Negativno"DrugoRaspon ("b2"). Vrijednost = "Nula"Završi akoZavrši akoKraj podm |

AKO - Ili, I, Xor, Ne
Zatim ćemo raspravljati o logičkim operatorima: Ili, I, Xor, Ne.
Ja za
The Ili rukovateljski testovi ako ispunjen je barem jedan uvjet.
Sljedeći će kôd testirati je li vrijednost u rasponu A2 manja od 5.000 ili veća od 10.000:
123 | Ako raspon ("a2"). Vrijednost 10000 ZatimRaspon ("b2"). Vrijednost = "Izvan raspona"Završi ako |

Možete uključiti više Ors -ova u jedan redak:
123 | Ako je raspon ("a2"). Vrijednost 10000 ili raspon ("a2"). Vrijednost = 9999 ZatimRaspon ("b2"). Vrijednost = "Izvan raspona"Završi ako |
Ako ćete koristiti više Ors -ova, preporučuje se korištenje znaka za nastavak retka kako bi vaš kôd bio lakši za čitanje:
123456 | Ako je raspon ("a2"). Vrijednost <5000 Ili _Raspon ("a2"). Vrijednost> 10000 Ili _Raspon ("a2"). Vrijednost = 9999 ZatimRaspon ("b2"). Vrijednost = "Izvan raspona"Završi ako |

Ako je And
Operator And omogućuje vam da provjerite je li SVI uvjeti su ispunjeni.
123 | Ako je raspon ("a2"). Vrijednost> = 5000 i raspon ("a2"). Vrijednost <= 10000 ZatimRaspon ("b2"). Vrijednost = "U rasponu"Završi ako |

Ako Xor
Operator Xor omogućuje vam da provjerite je li ispunjen je točno jedan uvjet. Ako su ispunjeni nula uvjeti Xor će vratiti FALSE, Ako su ispunjena dva ili više uvjeta, Xor će također vratiti false.
Rijetko sam vidio Xor kako se koristi u VBA programiranju.
Ako ne
Operator Not koristi se za pretvaranje FALSE u TRUE ili TRUE u FALSE:
123 | Sub IF_Not ()MsgBox Not (True)Kraj podm |
Uočite da operator Not zahtijeva zagrade oko izraza za prebacivanje.
Operator Not se također može primijeniti na naredbe If:
123 | Ako nije (raspon ("a2"). Vrijednost> = 5000 i raspon ("a2"). Vrijednost <= 10000) tadaRaspon ("b2"). Vrijednost = "Izvan raspona"Završi ako |

Ako Usporedbe
Prilikom uspoređivanja obično ćete koristiti jedan od operatora usporedbe:
Operator usporedbe | Obrazloženje |
= | Jednak |
| Nije jednako |
> | Veći od |
>= | Veći ili Jednaki |
< | Manje od |
<= | Manje ili jednako |
Međutim, možete koristiti i bilo koji izraz ili funkciju što rezultira TRUE ili FALSE
Ako - Booleova funkcija
Prilikom izrade izraza za If naredbe možete koristiti i bilo koju funkciju koja generira TRUE ili False. VBA ima nekoliko ovih funkcija:
Funkcija | Opis |
IsDate | Vraća TRUE ako je izraz važeći datum |
Prazno je | Provjerite ima li praznih ćelija ili nedefiniranih varijabli |
IsError | Provjerite vrijednosti pogrešaka |
IsNull | Provjerite NULL vrijednost |
JeNumerički | Provjerite numeričku vrijednost |
Mogu se nazvati ovako:
1 | Ako je IsEmpty (Raspon ("A1"). Vrijednost) Tada MsgBox "Ćelija prazna" |
Excel također ima mnoge dodatne funkcije koje se mogu pozvati pomoću funkcije WorksheetFunction. Evo primjera Excel IsText funkcije:
12 | Ako Application.WorksheetFunction.IsText (Raspon ("a2"). Vrijednost) Tada _MsgBox "Ćelija je tekst" |
Također možete stvoriti vlastite korisnički definirane funkcije (UDF -ove). U nastavku ćemo stvoriti jednostavnu Booleovu funkciju koja vraća TRUE. Tada ćemo pozvati tu funkciju u našoj naredbi If:
1234567891011 | Sub If_Function ()Ako TrueFunction TadaMsgBox "True"Završi akoKraj podmFunkcija TrueFunction () Kao BooleovaTrueFunction = IstinaZavršna funkcija |

Usporedba teksta
Također možete usporediti tekst sličan usporedbi brojeva:
Kada uspoređujete tekst, morate imati na umu "Velika slova" (gornji ili donji). Prema zadanim postavkama, VBA smatra da se slova s različitim pismima ne podudaraju. Drugim riječima, "A" "a".Ako želite da VBA zanemaruje velika i mala slova, morate dodati deklaraciju Option Compare Text na vrh vašeg modula:
Nakon što ste dali tu izjavu "A" = "a":
12345 | Opcija Usporedi tekstSub If_Text ()MsgBox "a" = "A"Kraj podm |
VBA ako vam se sviđa
VBA Like Operator omogućuje vam da napravite netočne usporedbe teksta. Kliknite vezu "Sviđa mi se operateru" da biste saznali više, ali u nastavku ćemo prikazati osnovni primjer:
12345678 | Dim strName kao StringstrName = "Gospodin Charles"Ako strName poput "Mr*" TadaMsgBox "True"DrugoMsgBox "Lažno"Završi ako |
Ovdje koristimo zamjensku zvjezdicu "*". * Označava bilo koji broj znakova. Dakle, gornja naredba If vratit će TRUE. Operator Like iznimno je moćan, ali često nedovoljno korišten alat za rješavanje teksta.
Ako petlje
VBA petlje omogućuju ponavljanje radnji. Kombiniranje IF-ELSE-ova s petljama izvrstan je način za brzu obradu mnogih izračuna.
Nastavljajući s našim pozitivnim / negativnim primjerom, dodat ćemo za svaku petlju kako bismo prošli niz ćelija:
1234567891011121314 | Sub If_Loop ()Prigušena ćelija kao rasponZa svaku ćeliju u rasponu ("A2: A6")Ako je Cell.Value> 0 TadaCell.Offset (0, 1) .Value = "Pozitivno"Ostala ćelija.Vrijednost <0 ZatimCell.Offset (0, 1) .Value = "Negativno"DrugoCell.Offset (0, 1) .Value = "Nula"Završi akoSljedeća ćelijaKraj podm |
Ako su drugi primjeri
Sada ćemo preći na neke specifičnije primjere.
Provjerite je li ćelija prazna
Ovaj kôd će provjeriti je li ćelija prazna. Ako je prazna, zanemarit će ćeliju. Ako nije prazno, vrijednost ćelije će se ispisati u ćeliju desno:
1234567 | Sub If_Cell_Empty ()Ako raspon ("a2"). Vrijednost "" ZatimRaspon ("b2"). Vrijednost = Raspon ("a2"). VrijednostZavrši akoKraj podm |
Provjerite sadrži li ćelija specifičan tekst
Funkcija Instr testira nalazi li se niz teksta u drugom nizu. Upotrijebite ga s naredbom If za provjeru sadrži li ćelija određeni tekst:
123 | Ako je Instr (Raspon ("A2"). Vrijednost, "tekst")> 0 ZatimMsgbox "Tekst je pronađen"Završi ako |
Provjerite sadrži li ćelija tekst
Ovaj kôd će testirati je li ćelija tekstualna:
1234567 | Sub If_Cell_Is_Text ()Ako Application.WorksheetFunction.IsText (Raspon ("a2"). Vrijednost) ZatimMsgBox "Ćelija je tekst"Završi akoKraj podm |
Ako idete
Rezultat naredbe If možete koristiti za "Idi na" drugi odjeljak koda.
12345678910 | Sub IfGoTo ()Ako je IsError (Cell.value) TadaIdi na PreskočiZavrši ako»Neki KodeksPreskočiti:Kraj podm |
Izbriši redak ako je ćelija prazna
Pomoću Ifs i petlji možete provjeriti je li ćelija prazna i ako je tako izbrisati cijeli redak.
123456789 | PodizbrišiRowIfCellBlank ()Dim Cell As RangeZa svaku ćeliju u rasponu ("A2: A10")Ako je Cell.Value = "" Zatim Cell.EntireRow.DeleteSljedeća ćelijaKraj podm |
Ako MessageBox Da / Ne
S VBA okvirima za poruke možete zatražiti od korisnika da odabere između nekoliko opcija. Okvir s porukom Da / Ne traži od korisnika da odabere Da ili Ne. Možete dodati okvir s porukom Da / Ne u postupak da biste upitali korisnika želi li nastaviti s postupkom ili ne. Unosom korisnika upravljate pomoću naredbe If.Ovdje je okvir s da/ne porukom u praksi:
123456789101112 | Pod MsgBoxVariable ()Zatamnjen odgovor Kao cijeli brojanswer = MsgBox ("Želite li nastaviti?", vbQuestion + vbDaNe)Ako je odgovor = vbDaMsgBox "Da"DrugoMsgBox "Ne"Završi akoKraj podm |
VBA If, ElseIf, Else in Access VBA
Funkcije If, ElseIf i Else rade potpuno isto u Access VBA kao i u Excel VBA.
Naredbom If možete provjeriti postoje li zapisi u skupu zapisa.
