VBA If, ElseIf, Else (Ghidul final al declarațiilor If)

Declarație VBA If

Daca atunci

VBA Dacă Instrucțiunile vă permit să testați dacă expresiile sunt ADEVĂRATE sau FALSE, rularea unui cod diferit pe baza rezultatelor.Să vedem un exemplu simplu:
1 Dacă Range ("a2"). Valoare> 0 Apoi Range ("b2"). Value = "Positive"
Aceasta testează dacă valoarea din Gama A2 este mai mare de 0. Dacă da, setați Gama B2 egal cu „Pozitiv”Notă: La testarea condițiilor vom folosi operatorii de comparație =,>, <,, =. Le vom discuta mai detaliat mai târziu în articol.Iată sintaxa pentru o instrucțiune If cu o singură linie:
1 Dacă [test_expression] atunci [action]
Pentru a ușura citirea, puteți utiliza un caracter Continuare linie (subliniere) pentru a extinde Instrucțiunile If la două linii (așa cum am făcut în imaginea de mai sus):
12 Dacă [test_expression] atunci _[acțiune]
12 Dacă Range ("a2"). Valoare> 0 Atunci _Interval ("b2"). Valoare = "Pozitiv"

End If

Instrucțiunea „single-line” if de mai sus funcționează bine atunci când testați o condiție. Dar pe măsură ce declarațiile IF devin mai complicate cu condiții multiple, va trebui să adăugați un „End If” la sfârșitul declarației if:
123 Dacă Range ("a2"). Valoare> 0 AtunciInterval ("b2"). Valoare = "Pozitiv"End If

Aici sintaxa este:

123 Dacă [test_expression] atunci[acțiune]End If

Sfârșitul If înseamnă sfârșitul declarației if.

Acum să adăugăm un ElseIF:

ElseIF - Condiții multiple

ElseIf este adăugat la o instrucțiune If existentă. Altfel Dacă testează dacă este îndeplinită o condiție DOAR dacă nu au fost îndeplinite condițiile anterioare.În exemplul anterior am testat dacă valoarea unei celule este pozitivă. Acum vom testa, de asemenea, dacă valoarea celulei este negativă cu un ElseIf:
12345 Dacă Range ("a2"). Valoare> 0 AtunciInterval ("b2"). Valoare = "Pozitiv"ElseIf Range ("a2"). Valoare <0 ApoiInterval ("b2"). Valoare = "Negativ"End If

Puteți utiliza mai multe ElseIfs pentru a testa condiții multiple:

1234567891011 Sub If_Multiple_Conditions ()Dacă Range ("a2"). Value = "Cat" AtunciGama ("b2"). Valoare = "Miau"ElseIf Range ("a2"). Value = "Dog" ApoiInterval ("b2"). Valoare = "Woof"ElseIf Range ("a2"). Value = "Duck" ApoiGama ("b2"). Valoare = "Quack"End IfSfârșitul Sub

Acum vom adăuga un Altfel:

Altfel

The Altfel va rula dacă nu au fost îndeplinite alte condiții anterioare.

Vom termina exemplul nostru folosind un alt element pentru a indica faptul că dacă valoarea celulei nu este pozitivă sau negativă, atunci trebuie să fie zero:

1234567 Dacă Range ("a2"). Valoare> 0 AtunciInterval ("b2"). Valoare = "Pozitiv"ElseIf Range ("a2"). Valoare <0 ApoiInterval ("b2"). Valoare = "Negativ"AltfelInterval ("b2"). Valoare = "Zero"End If

Dacă-Altfel

Cel mai comun tip de declarație If este un If-Else simplu:

1234567 Sub If_Else ()Dacă Range ("a2"). Valoare> 0 AtunciInterval ("b2"). Valoare = "Pozitiv"AltfelInterval ("b2"). Valoare = "Nu este pozitiv"End IfSfârșitul Sub

IF-uri imbricate

Puteți, de asemenea, să „cuibăriți” dacă sunt afirmații unul în celălalt.

1234567891011 Sub Nested_Ifs ()Dacă Range ("a2"). Valoare> 0 AtunciInterval ("b2"). Valoare = "Pozitiv"AltfelDacă Range ("a2"). Valoare <0 AtunciInterval ("b2"). Valoare = "Negativ"AltfelInterval ("b2"). Valoare = "Zero"End IfEnd IfSfârșitul Sub

DACĂ - Sau, Și, Xor, nu

În continuare vom discuta despre operatorii logici: Sau, Și, Xor, Nu.

Dacă Or

The Sau testele operatorului dacă cel puțin o condiție este îndeplinită.

Următorul cod va testa dacă valoarea din Gama A2 este mai mică de 5.000 sau mai mare de 10.000:

123 Dacă Range ("a2"). Valoare 10000 AtunciRange ("b2"). Value = "Out of Range"End If

Puteți include mai multe OR-uri într-o singură linie:

123 Dacă Range ("a2"). Valoare 10000 Sau Range ("a2"). Value = 9999 ApoiRange ("b2"). Value = "Out of Range"End If

Dacă doriți să utilizați mai multe OR-uri, este recomandat să utilizați un caracter de continuare a liniei pentru a vă ușura citirea codului:

123456 Dacă Range ("a2"). Valoare <5000 Sau _Gama („a2”). Valoare> 10000 Sau _Gama („a2”). Valoare = 9999 ApoiRange ("b2"). Value = "Out of Range"End If

Dacă Și

Operatorul And vă permite să testați dacă TOATE condițiile sunt îndeplinite.

123 Dacă Range ("a2"). Valoare> = 5000 Și Range ("a2"). Value <= 10000 AtunciRange ("b2"). Value = "In Range"End If

Dacă Xor

Operatorul Xor vă permite să testați dacă exact o condiție este îndeplinită. Dacă sunt îndeplinite condițiile zero, Xor va returna FALS, Dacă sunt îndeplinite două sau mai multe condiții, Xor va returna, de asemenea, fals.

Am văzut rar Xor folosit în programarea VBA.

Dacă nu

Operatorul Not este utilizat pentru a converti FALS în ADEVĂRAT sau ADEVĂRAT în FALS:

123 Sub IF_Not ()MsgBox Not (True)Sfârșitul Sub

Observați că operatorul Not necesită paranteză în jurul expresiei pentru a comuta.

Operatorul Not poate fi aplicat și instrucțiunilor If:

123 Dacă nu (Interval ("a2"). Valoare> = 5000 Și Interval ("a2"). Valoare <= 10000) ApoiRange ("b2"). Value = "Out of Range"End If

Dacă Comparații

Când faceți comparații, veți utiliza de obicei unul dintre operatorii de comparație:

Operator de comparație Explicaţie
= Egal cu
Nu este egal cu
> Mai mare ca
>= Mai mare sau egal cu
< Mai puțin decât
<= Mai mic sau egal cu

Cu toate acestea, puteți utiliza și orice expresie sau funcție care are ca rezultat ADEVĂRAT sau FALS

Dacă - Funcție booleană

Când creați expresii pentru Instrucțiuni If, puteți utiliza, de asemenea, orice funcție care generează TRUE sau False. VBA are câteva dintre aceste funcții:

Funcţie Descriere
IsDate Returnează TRUE dacă expresia este o dată validă
Este gol Verificați dacă există celule goale sau variabile nedefinite
IsError Verificați dacă există valori de eroare
IsNull Verificați valoarea NULL
IsNumeric Verificați valoarea numerică

Se pot numi astfel:

1 Dacă IsEmpty (Interval ("A1"). Valoare), atunci MsgBox "Cell Empty"

Excel are, de asemenea, multe funcții suplimentare care pot fi numite folosind WorksheetFunction. Iată un exemplu al funcției Excel IsText:

12 Dacă Application.WorksheetFunction.IsText (Range ("a2"). Value) Atunci _MsgBox „Celula este text”

De asemenea, puteți crea propriile funcții definite de utilizator (UDF). Mai jos vom crea o funcție booleană simplă care returnează TRUE. Apoi vom apela acea funcție în instrucțiunea noastră If:

1234567891011 Sub If_Function ()Dacă TrueFunction atunciMsgBox „Adevărat”End IfSfârșitul SubFuncția TrueFunction () Ca BooleanTrueFunction = AdevăratFuncția de sfârșit

Compararea textului

De asemenea, puteți compara un text similar cu cel de comparare a numerelor:
1 Msgbox "a" = "b"
1 Msgbox "a" = "a"
Când comparați text, trebuie să aveți în vedere „majuscule” (superior sau inferior). În mod implicit, VBA consideră literele cu cazuri diferite ca nepotrivite. Cu alte cuvinte, „A” „a”.Dacă doriți ca VBA să ignore majuscule, trebuie să adăugați declarația Opțiunea de comparare a textului în partea de sus a modulului:
1 Opțiune Comparați textul

După ce ați făcut acea declarație „A” = „a”:
12345 Opțiune Comparați textulSub If_Text ()MsgBox "a" = "A"Sfârșitul Sub

VBA Dacă doriți

VBA Like Operator vă permite să faceți comparații inexacte ale textului. Faceți clic pe linkul „Apreciați operatorul” pentru a afla mai multe, dar vom afișa un exemplu de bază mai jos:

12345678 Dim strName ca ȘirstrName = "Domnul Charles"Dacă strName Ca „Mr. *” AtunciMsgBox „Adevărat”AltfelMsgBox „Fals”End If

Aici folosim un asterisc „*” cu metacaracter. * Reprezintă orice număr de caractere. Deci, declarația If de mai sus va reveni ADEVĂRAT. Operatorul Like este un instrument extrem de puternic, dar de multe ori subutilizat pentru tratarea textului.

Dacă Bucle

Buclele VBA vă permit să repetați acțiuni. Combinarea IF-ELSEs cu Loops este o modalitate excelentă de a procesa rapid multe calcule.

Continuând cu exemplul nostru pozitiv / negativ, vom adăuga un Pentru fiecare buclă pentru a parcurge o gamă de celule:

1234567891011121314 Sub If_Loop ()Dim Cell ca RangePentru fiecare celulă din interval („A2: A6”)Dacă Cell.Value> 0 AtunciCell.Offset (0, 1) .Value = "Pozitiv"ElseIf Cell.Value <0 ApoiCell.Offset (0, 1) .Value = "Negativ"AltfelCell.Offset (0, 1) .Value = "Zero"End IfUrmătoarea celulăSfârșitul Sub

Dacă altele Exemple

Acum vom trece în revistă câteva exemple mai specifice.

Verificați dacă celula este goală

Acest cod va verifica dacă o celulă este goală. Dacă este goală, va ignora celula. Dacă nu este gol, va afișa valoarea celulei în celula din dreapta:
1234567 Sub If_Cell_Empty ()Dacă Range ("a2"). Valoare "" AtunciInterval ("b2"). Valoare = Interval ("a2"). ValoareEnd IfSfârșitul Sub

Verificați dacă celula conține text specific

Funcția Instr testează dacă un șir de text se găsește într-un alt șir. Folosiți-o cu o instrucțiune If pentru a verifica dacă o celulă conține text specific:
123 Dacă Instr (Range ("A2"). Valoare, "text")> 0 AtunciMesaj "Text găsit"End If

Verificați dacă celula conține text

Acest cod va testa dacă o celulă este text:
1234567 Sub If_Cell_Is_Text ()Dacă Application.WorksheetFunction.IsText (Range ("a2"). Value) AtunciMsgBox „Celula este text”End IfSfârșitul Sub

Dacă Goto

Puteți folosi rezultatul unei instrucțiuni If pentru a „merge la” o altă secțiune de cod.
12345678910 Sub IfGoTo ()Dacă IsError (Cell.value) atunciTreci pesteEnd If- Un codOcolire:Sfârșitul Sub

Ștergeți rândul dacă celula este necompletată

Folosind Ifs și bucle puteți testa dacă o celulă este goală și, în caz afirmativ, ștergeți întregul rând.
123456789 Sub DeleteRowIfCellBlank ()Dim Cell As RangePentru fiecare celulă din interval („A2: A10”)Dacă Cell.Value = "" Atunci Cell.EntireRow.DeleteUrmătoarea celulăSfârșitul Sub

Dacă MessageBox Da / Nu

Cu casetele de mesaje VBA puteți solicita utilizatorului să selecteze dintre mai multe opțiuni. Caseta de mesaje Da / Nu cere utilizatorului să selecteze Da sau Nu. Puteți adăuga o Casetă de mesaje Da / Nu la o procedură pentru a întreba utilizatorul dacă dorește să ruleze procedura sau nu. Vă ocupați de introducerea utilizatorului utilizând o instrucțiune If.Iată Caseta de mesaje Da / Nu în practică:
123456789101112 Sub MsgBoxVariable ()Răspuns slab Ca întreganswer = MsgBox („Vrei să continui?”, vbQuestion + vbYesNo)Dacă răspuns = vbDa atunciMsgBox „Da”AltfelMsgBox „Nu”End IfSfârșitul Sub

VBA If, ElseIf, Else în Access VBA

Funcțiile If, ​​ElseIf și Else funcționează exact la fel în Access VBA ca în Excel VBA.

Puteți utiliza o declarație If pentru a verifica dacă există înregistrări într-un set de înregistrări.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave