VBA If, ElseIf, Else (Ultimativni vodič za If izjave)

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:
1 Msgbox "a" = "b"
1 Msgbox "a" = "a"
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:
1 Opcija Usporedi tekst

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.

wave wave wave wave wave