VBA If, ElseIf, Else (Končni vodnik po izjavah If)

Izjava VBA If

Če, potem

VBA Če vam stavki omogočajo, da preizkusite, ali so izrazi TRUE ali FALSE, se na podlagi rezultatov izvede drugačna koda.Poglejmo preprost primer:
1 Če je obseg ("a2"). Vrednost> 0 Potem obseg ("b2"). Vrednost = "pozitivno"
S tem se preveri, ali je vrednost v območju A2 večja od 0. Če je tako, nastavite obseg B2 na »Pozitivno«Opomba: Pri preskusnih pogojih bomo uporabili operatorje za primerjavo =,>, <,, =. Podrobneje jih bomo obravnavali kasneje v članku.Tukaj je sintaksa preproste enovrstične izjave If:
1 Če [test_expression], potem [dejanje]
Za lažje branje lahko z znakom za nadaljevanje vrstice (podčrtaj) razširite stavke If na dve vrstici (kot smo to storili na zgornji sliki):
12 Če [test_expression] potem _[dejanje]
12 Če je obseg ("a2"). Vrednost> 0 Potem _Razpon ("b2"). Vrednost = "Pozitivno"

Konec Če

Zgornji stavek "eno vrstica" if dobro deluje, ko preizkušate en pogoj. Ker pa se vaše izjave IF z več pogoji zapletejo, boste morali na konec stavka if dodati »End If«:
123 Če je obseg ("a2"). Vrednost> 0 PotemRazpon ("b2"). Vrednost = "Pozitivno"Konec Če

Tukaj je sintaksa:

123 Če [test_expression] potem[dejanje]Konec Če

Konec If pomeni konec stavka if.

Zdaj pa dodajmo še ElSIF:

ElseIF - Več pogojev

ElseIf se doda obstoječemu stavku If. V nasprotnem primeru preveri, če je pogoj izpolnjen SAMO, če prejšnji pogoji niso izpolnjeni.V prejšnjem primeru smo preverili, ali je vrednost celice pozitivna. Zdaj bomo preizkusili tudi, ali je vrednost celice negativna z ElseIf:
12345 Če je obseg ("a2"). Vrednost> 0 PotemRazpon ("b2"). Vrednost = "Pozitivno"ElseIf Range ("a2"). Vrednost <0 PotemRazpon ("b2"). Vrednost = "Negativno"Konec Če

Za testiranje več pogojev lahko uporabite več ElseIfs:

1234567891011 Sub If_Multiple_Conditions ()Če Range ("a2"). Value = "Cat" PotemRazpon ("b2"). Vrednost = "Meow"ElseIf Range ("a2"). Value = "Dog" PotemRazpon ("b2"). Vrednost = "Woof"ElseIf Range ("a2"). Value = "Duck" PotemRange ("b2"). Value = "Quack"Konec ČeEnd Sub

Zdaj bomo dodali an Sicer pa:

Sicer pa

The Sicer pa bo tekel, če drugi prejšnji pogoji niso bili izpolnjeni.

Naš primer bomo zaključili z uporabo Else, ki označuje, da če vrednost celice ni pozitivna ali negativna, potem mora biti nič:

1234567 Če je obseg ("a2"). Vrednost> 0 PotemRazpon ("b2"). Vrednost = "Pozitivno"ElseIf Range ("a2"). Vrednost <0 PotemRazpon ("b2"). Vrednost = "Negativno"Sicer paRazpon ("b2"). Vrednost = "nič"Konec Če

Če potem

Najpogostejša vrsta stavka If je preprost If-Else:

1234567 Sub If_Else ()Če je obseg ("a2"). Vrednost> 0 PotemRazpon ("b2"). Vrednost = "Pozitivno"Sicer paRazpon ("b2"). Vrednost = "Ni pozitivno"Konec ČeEnd Sub

Vgnezdeni IF -ji

Lahko tudi "ugnezdite", če izjave drug v drugem.

1234567891011 Sub Nested_Ifs ()Če je obseg ("a2"). Vrednost> 0 PotemRazpon ("b2"). Vrednost = "Pozitivno"Sicer paČe je obseg ("a2"). Vrednost <0 PotemRazpon ("b2"). Vrednost = "Negativno"Sicer paRazpon ("b2"). Vrednost = "nič"Konec ČeKonec ČeEnd Sub

ČE - Ali, In, Xor, Ne

Nato bomo razpravljali o logičnih operaterjih: Ali, In, Xor, Ne.

Če Or

The Or operaterjevi testi, če je izpolnjen vsaj en pogoj.

Naslednja koda bo preverila, ali je vrednost v območju A2 manjša od 5.000 ali večja od 10.000:

123 Če Range ("a2"). Vrednost 10000 PotemRazpon ("b2"). Vrednost = "Izven območja"Konec Če

V eno vrstico lahko vključite več Ors:

123 Če je obseg ("a2"). Vrednost 10000 ali obseg ("a2"). Vrednost = 9999 PotemRazpon ("b2"). Vrednost = "Izven območja"Konec Če

Če boste uporabljali več Ors, je za lažje branje kode priporočljivo uporabiti znak za nadaljevanje vrstice:

123456 Če je obseg ("a2"). Vrednost <5000 Ali _Razpon ("a2"). Vrednost> 10000 Ali _Razpon ("a2"). Vrednost = 9999 PotemRazpon ("b2"). Vrednost = "Izven območja"Konec Če

Če And

Operater And vam omogoča, da preizkusite, če Izpolnjeni so VSI pogoji.

123 Če je obseg ("a2"). Vrednost> = 5000 In obseg ("a2"). Vrednost <= 10000 PotemRazpon ("b2"). Vrednost = "V dosegu"Konec Če

Če Xor

Operater Xor vam omogoča, da preizkusite, če izpolnjen je točno en pogoj. Če so izpolnjeni nič pogoji, bo Xor vrnil FALSE, če sta izpolnjena dva ali več pogojev, bo Xor vrnil tudi false.

Redko sem videl, da se Xor uporablja pri programiranju VBA.

Če ne

Operater Not se uporablja za pretvorbo FALSE v TRUE ali TRUE v FALSE:

123 Sub IF_Not ()MsgBox Not (True)End Sub

Upoštevajte, da operator Not zahteva oklepaje, ki obkrožajo izraz za preklop.

Operatorja Not je mogoče uporabiti tudi za stavke If:

123 Če ne (Razpon ("a2"). Vrednost> = 5000 In Razpon ("a2"). Vrednost <= 10000) NatoRazpon ("b2"). Vrednost = "Izven območja"Konec Če

Če primerjave

Pri primerjavah običajno uporabite enega od operaterjev za primerjavo:

Primerjalni operater Pojasnilo
= Enako
Ni enako
> Večji kot
>= Večji ali enak
< Manj kot
<= Manj ali enako

Lahko pa uporabite tudi kateri koli izraz ali funkcijo kar ima za posledico TRUE ali FALSE

Če - Booleova funkcija

Pri sestavljanju izrazov za stavke If lahko uporabite tudi katero koli funkcijo, ki ustvari TRUE ali False. VBA ima nekaj teh funkcij:

Funkcija Opis
IsDate Vrne TRUE, če je izraz veljaven datum
Je prazno Preverite prazne celice ali nedoločene spremenljivke
IsError Preverite vrednosti napak
IsNull Preverite NULL vrednost
JeNumerično Preverite številčno vrednost

Lahko jih imenujemo tako:

1 Če je IsEmpty (obseg ("A1"). Vrednost), potem sporočilo "Cell Empty"

Excel ima tudi številne dodatne funkcije, ki jih je mogoče poklicati s funkcijo WorksheetFunction. Tu je primer funkcije Excel IsText:

12 Če Application.WorksheetFunction.IsText (Razpon ("a2"). Vrednost) Nato _MsgBox "Celica je besedilo"

Ustvarite lahko tudi lastne uporabniško določene funkcije (UDF). Spodaj bomo ustvarili preprosto logično funkcijo, ki vrne TRUE. Nato bomo to funkcijo poklicali v stavku If:

1234567891011 Sub If_Function ()Če TrueFunction PotemMsgBox "True"Konec ČeEnd SubFunkcija TrueFunction () Kot logična vrednostTrueFunction = TrueKončana funkcija

Primerjava besedila

Besedilo lahko primerjate tudi s primerjavo števil:
1 Msgbox "a" = "b"
1 Msgbox "a" = "a"
Ko primerjate besedilo, morate biti pozorni na »Velikost« (zgornjo ali spodnjo). VBA privzeto meni, da se črke z različnimi velikimi črkami ne ujemajo. Z drugimi besedami, "A" "a".Če želite, da VBA prezre velike in male črke, morate na vrh modula dodati izjavo Option Compare Text:
1 Možnost Primerjaj besedilo

Po podani izjavi "A" = "a":
12345 Možnost Primerjaj besediloSub If_Text ()MsgBox "a" = "A"End Sub

VBA, če je všeč

Operater VBA Like Operator vam omogoča, da naredite nenatančne primerjave besedila. Če želite izvedeti več, kliknite povezavo »Všeč mi je operater«, vendar bomo spodaj prikazali osnovni primer:

12345678 Zatemni strName kot nizstrName = "gospod Charles"Če strName kot "gospod*", potemMsgBox "True"Sicer paMsgBox "False"Konec Če

Tukaj uporabljamo zvezdico »*« kot nadomestni znak. * Pomeni poljubno število znakov. Torej zgornji stavek If vrne TRUE. Operater Like je izjemno močno, a pogosto premalo uporabljeno orodje za obravnavo besedila.

Če zanke

Zanke VBA vam omogočajo ponavljanje dejanj. Združevanje IF-ELSE z zankami je odličen način za hitro obdelavo številnih izračunov.

Nadaljujemo z našim pozitivnim / negativnim primerom, zato bomo za vsako zanko dodali krog po vrsti celic:

1234567891011121314 Sub If_Loop ()Zatemni celico kot obsegZa vsako celico v razponu ("A2: A6")Če je Cell.Value> 0, potemCell.Offset (0, 1) .Value = "Pozitivno"ElseIf Cell.Value <0 PotemCell.Offset (0, 1) .Value = "Negativno"Sicer paCell.Offset (0, 1) .Value = "Nič"Konec ČeNaslednja celicaEnd Sub

Če so drugi primeri

Zdaj bomo preučili nekaj bolj specifičnih primerov.

Preverite, ali je celica prazna

Ta koda bo preverila, ali je celica prazna. Če je prazna, ne upošteva celice. Če ni prazno, bo vrednost celice prikazala v celici na desni:
1234567 Sub If_Cell_Empty ()Če Range ("a2"). Vrednost "" PotemRazpon ("b2"). Vrednost = Razpon ("a2"). VrednostKonec ČeEnd Sub

Preverite, ali celica vsebuje določeno besedilo

Funkcija Instr preveri, ali je niz besedila v drugem nizu. Uporabite ga z izjavo If, da preverite, ali celica vsebuje določeno besedilo:
123 Če je Instr (Razpon ("A2"). Vrednost, "besedilo")> 0 PotemMsgbox "Besedilo je najdeno"Konec Če

Preverite, ali celica vsebuje besedilo

Ta koda bo preverila, ali je celica besedilo:
1234567 Sub If_Cell_Is_Text ()Če Application.WorksheetFunction.IsText (Razpon ("a2"). Vrednost) NatoMsgBox "Celica je besedilo"Konec ČeEnd Sub

Če greš

Rezultat stavka If lahko uporabite za "Pojdi na" drug del kode.
12345678910 Sub IfGoTo ()Če je IsError (Cell.value) PotemPojdi PreskočiKonec Če"Nekaj ​​kodeksaPreskoči:End Sub

Izbriši vrstico, če je celica prazna

S pomočjo ifs in zank lahko preizkusite, ali je celica prazna, in če je tako, izbrišite celotno vrstico.
123456789 Sub DeleteRowIfCellBlank ()Dim Cell As RangeZa vsako celico v razponu ("A2: A10")Če je Cell.Value = "" Potem Cell.EntireRow.DeleteNaslednja celicaEnd Sub

Če MessageBox Da / Ne

Z okenci za sporočila VBA lahko od uporabnika zahtevate izbiro med več možnostmi. Polje za sporočila Da / Ne od uporabnika zahteva, da izbere Da ali Ne. Postopku lahko dodate polje Da / Ne, da vprašate uporabnika, ali želi nadaljevati postopek ali ne. Z vnosom uporabnika upravljate z stavkom If.Tukaj je polje za sporočila da/ne:
123456789101112 Sub MsgBoxVariable ()Zatemnjen odgovor kot celo številoanswer = MsgBox ("Ali želite nadaljevati?", vbQuestion + vbDa Ne)Če je odgovor = vbDaMsgBox "Da"Sicer paMsgBox "Ne"Konec ČeEnd Sub

VBA Če, drugače, V Accessu VBA

Funkcije If, ​​ElseIf in Else v Access VBA delujejo popolnoma enako kot v Excelu VBA.

Z stavkom If lahko preverite, ali so v nizu zapisov zapisi.

wave wave wave wave wave