Funcția IF în VBA este una dintre cele mai frecvent utilizate dintre toate afirmațiile. Funcția IF verifică dacă condiția specificată este îndeplinită sau nu. Funcția IF din VBA funcționează într-un mod ușor diferit de modul în care funcționează în Excel. În Excel, funcția IF face două lucruri: Verifică dacă condiția dată se evaluează la TRUE sau FALSE și apoi returnează o valoare de utilizat pe baza evaluării, adică IF ( condiție, return_value_if_condition_true, return_value_if_condition_false). Cu toate acestea, funcția IF în VBA face doar prima parte, adică verificați dacă condiția se evaluează la ADEVĂRAT sau FALS. Pașii de urmat în oricare dintre scenarii, așa cum se specifică folosind instrucțiunea THEN suplimentară.
Utilizarea unei funcții IF simple în VBA
Iată un exemplu de Funcția IF... Această bucată de cod VBA verifică pur și simplu dacă condiția specificată (adică 1\u003e 4) este evaluată la TRUE sau FALSE. În acest caz, am specificat pașii care trebuie finalizați doar atunci când condiția este evaluată la TRUE. În acest caz, rezultatul va fi afișat pe ecran. Dacă funcția ar fi evaluată la FALS, codul VBA nu va face nimic.
1 | Sub IF_FUNCTION () |
ATUNCI declarația este în esență o directivă care indică faptul că pașii imediat următori trebuie executate dacă condiția chiar înainte este evaluată la TRUE.
Funcția IF se termină de obicei cu o declarație END IF care permite aplicației să știe că este ultima linie a funcției IF. Dat mai jos este o formă puțin mai scurtă a funcției IF. Rețineți că instrucțiunea END IF a fost eliminată și, prin urmare, trei linii de cod au fost îmbinate într-una singură.
Sub IF_FUNCTION_SHORT () |
Cu toate acestea, acest formular trebuie utilizat numai atunci când nu există ALTE sau ALTE DACĂ sunt necesare declarații. Să vedem ce sunt și cum ajută la îmbunătățirea funcției IF.
Folosirea unei funcții IF cu ELSE în VBA
În exemplul dat mai sus, am văzut că funcția IF ar putea efectua pași numai dacă condiția este evaluată la TRUE. Dar dacă am dori să specificăm pașii care trebuie realizați atunci când oricare dintre condiții a fost îndeplinită. O modalitate de a realiza ramificarea dintr-o funcție IF este utilizarea instrucțiunii ELSE. Pur și simplu, declarația ELSE determină aplicația să execute pașii menționați în blocul ELSE atunci când condiția specificată în clauza IF este evaluată la FALS.
În exemplul de cod VBA de mai jos, condiția din funcția IF se evaluează ca fiind falsă, pașii menționați în blocul ELSE sunt executați cu rezultatul că mesajul „1 este mai mic de 4” este afișat pe ecran. Mai mulți pași pot fi adăugați la bloc pentru ca toți să se execute unul după altul.
1 | Sub IF_ELSEIF_FUNCTION () |
Utilizarea unei funcții IF cu ELSEIF și ELSE: în VBA
Declarația ELSE poate fi susținută de declarațiile ELSEIF. Acestea sunt utilizate în mod obișnuit pentru a verifica condițiile specifice și, dacă toate sunt evaluate la FALS, pașii specificați în condiția ELSE vor fi finalizați. Declarația IF va verifica dacă există o condiție dată. Dacă această condiție se dovedește a fi FALSĂ, va fi verificată condiția specificată în prima instrucțiune ELSEIF. Dacă acest lucru se dovedește a fi FALS, condiția specificată în a doua instrucțiune ELSEIF va fi verificată și așa mai departe și așa mai departe. Dacă toate condițiile specificate în instrucțiunile IF și ELSEIF se dovedesc a fi FALSE, în mod implicit, pașii menționați în blocul ELSE final: bloc vor fi executate. Vă rugăm să rețineți că, dacă există mai multe instrucțiuni ELSEIF, prima care se evaluează la TRUE va fi executată și odată finalizată, executarea codului se va muta la instrucțiunea END IF. Chiar dacă există mai multe condiții ELSEIF care se evaluează la TRUE, va fi executată doar prima care evaluează la TRUE.
1 |
|
În exemplul prezentat mai jos, starea IF este verificată mai întâi. Deoarece se evaluează la FALS, este evaluată prima condiție ELSEIF, urmată de a doua. Deoarece niciunul dintre ei nu este evaluat la TRUE, pașii menționați în condiția ELSE: sunt executați.
1 | Sub IF_ELSEIF_ELSE_FUNCTION () |
Sfat rapid - Cum să faceți ca declarațiile IF să funcționeze mai repede
Ambele bucăți de cod par similare. Cele două condiții ELSEIF din a doua funcție au fost schimbate. Care dintre următoarele bucăți de cod VBA credeți că se execută mai repede?:
End If
Apoi eu
MsgBox Timer - t
Sfârșitul Sub
Răspunsul este că al doilea se execută mult mai repede decât primul. De ce? Deoarece cea de-a doua are nevoie de aplicație pentru a trece prin linii mai mici de cod înainte de a găsi o condiție care se evaluează la TRUE. Amintiți-vă că prima condiție ELSEIF, care, dacă este găsită TRUE, este executată și niciuna dintre celelalte condiții nu este evaluată, chiar dacă ar trebui să evalueze și la TRUE. În prima parte a codului VBA, funcția ELSEIF de pe linia 6 evaluează la TRUE în timp ce în a doua, linia 5 îndeplinește criteriile. În esență, cu cât este mai probabil ca condiția să fie evaluată la TRUE, cu atât mai devreme ar trebui plasată în codul VBA, toate celelalte fiind aceleași.
Structurile de control vă permit să controlați secvența de execuție a programului. Fără instrucțiuni de control, toate instrucțiunile programului vor rula de la stânga la dreapta și de sus în jos. Cu toate acestea, uneori trebuie să executați în mod repetat un anumit set de instrucțiuni în mod automat sau să rezolvați problema în mod diferit, în funcție de valoarea variabilelor sau parametrilor specificați de utilizator în timpul rulării. Pentru aceasta sunt utilizate construcții de control și bucle.
VBA acceptă următoarele construcții decizionale:
Dacă. ... ... Atunci. ... ... Altfel
6.1 Construcția If. ... ... Atunci
Dacă. ... ... Apoi este folosit atunci când este necesar să se execute una sau un grup de instrucțiuni în funcție de o anumită condiție. Sintaxa pentru această construcție vă permite să o specificați într-o linie sau în mai multe linii ale programului:
If condition Then expression If condition Then expression End If
Condiția este de obicei o comparație simplă, dar poate fi orice expresie cu o valoare calculată. Această valoare este interpretată ca False dacă este zero și orice non-zero este considerat Adevărat. Dacă condiția este adevărată, atunci toate expresiile după cuvântul cheie Then sunt executate. Pentru a executa condiționat o singură instrucțiune, puteți utiliza atât sintaxa cu o singură linie, cât și sintaxa cu mai multe linii (construcție de blocuri).
Următorii doi operatori sunt echivalenți:
Dacă este vreo dată< Now Then anyDate = Now If anyDate < Now Then anyDate = Now End If
Rețineți că sintaxa instrucțiunii If. ... ... Atunci nu folosește instrucțiunea End If pentru o singură linie. Pentru a executa o secvență de instrucțiuni dacă o condiție este adevărată, utilizați clauza blocului If. ... ... Atunci. ... ... End If.
Dacă este vreo dată< Now Then anyDate = Now Timer.Enabled = False " Запретить таймер. End If
Dacă condiția este falsă, atunci instrucțiunile după cuvântul cheie Then nu sunt executate, iar controlul este trecut la următoarea linie (sau linia după instrucțiunea End If într-o construcție de bloc).
6.2 Dacă construiți. ... ... Atunci. ... ... Altfel
definește mai multe blocuri de instrucțiuni, dintre care unul va fi executat în funcție de condiție:
Dacă condiția1 Atunci expresia1 AltfelDacă condiția2 Atunci expresia2. ... ... Expresie altfel -n Sfârșit Dacă
Când este executat, condiția 1 este verificată mai întâi. Dacă este fals, VBA verifică următoarea condiție2 și așa mai departe, până când găsește o condiție adevărată. Când VBA o găsește, execută blocul adecvat de instrucțiuni și apoi transferă controlul către instrucțiunea care urmează instrucțiunii End if. Această construcție poate include un bloc de instrucțiuni Else pe care VBA îl execută dacă niciuna dintre condiții nu este îndeplinită.
Dacă. ... ... Atunci. ... ... ElseIf este într-adevăr doar un caz special al constructului If. ... ... Atunci. ... ... Altfel. Rețineți că această construcție poate conține orice număr de blocuri ElseIf sau chiar niciunul. Blocul Else poate fi inclus indiferent de prezența sau, dimpotrivă, absența blocurilor ElseIf.
Sub exemplu 1 () Dim a Singur, b Singur, x Singur Dim z Citit apel dublu ("A1", a) Citit apel ("B1", b) Fie x \u003d CSng (InputBox ("introduceți x", „Introducere date”, 0)) Dacă x<= a Then z = Sin(x) ElseIf x >\u003d b Apoi z \u003d Tan (x) Altfel: z \u003d Cos (x) Termină dacă sună ("C1", z) Termină Sub
Rețineți că puteți adăuga orice număr de blocuri Elself la declarația dvs. If. ... ... Atunci. Cu toate acestea, numărul de blocuri Elself poate deveni atât de mare încât If. ... ... Atunci va deveni foarte greoaie și incomodă. Într-o astfel de situație, ar trebui să se utilizeze o altă construcție decizională - Selectare caz.
6.3 Selectați Construcția carcasei
Select Case este o alternativă la If. ... ... Atunci. ... ... Altfel când executați un bloc format dintr-un set mare de instrucțiuni. Construcția Select Case oferă o capacitate similară cu constructul If. ... ... Atunci. ... ... Altfel, dar face codul mai lizibil atunci când există mai multe opțiuni.
Construcția Select Case operează pe o singură expresie testabilă, care este evaluată o dată la intrarea în construct. VBA compară apoi rezultatul cu valorile specificate în instrucțiunile Case ale constructului. Dacă se găsește o potrivire, se execută blocul de instrucțiuni asociat instrucțiunii Case:
Selectați Expresie test_caz]]. ... ... ] Finalizare selectare
Fiecare listă de expresii este o listă cu una sau mai multe valori. Dacă există mai multe valori într-o listă, acestea sunt separate prin virgule. Fiecare bloc de instrucțiuni conține mai multe instrucțiuni sau niciuna. Dacă se dovedește că valoarea calculată a expresiei testate corespunde valorilor din mai multe instrucțiuni de caz, atunci se execută blocul de instrucțiuni asociate cu prima instrucțiune de caz din toate potrivirile găsite. VBA execută un bloc de instrucțiuni asociat cu o instrucțiune Case Else (rețineți că este opțională) dacă nu se găsește nicio valoare de expresie potrivită cu valorile din toate listele de instrucțiuni Case.
Să luăm în considerare un exemplu de calcul al funcției
Sub exemplu2 () Const pi2 \u003d 1,57 Dim x As Single Dim z As Double Let x \u003d CSng (InputBox ("enter x", "Data input", 0)) Selectați Case x Case -pi2 z \u003d Sin (x) Case 0 z \u003d Cos (x) Case pi2 z \u003d Tan (x) Case Else MsgBox "Date de intrare nevalide!" Exit Sub End Selectare Apelare ("D1", z) End Sub
Rețineți că constructul Select Case evaluează expresia o singură dată când o introduceți și în If. ... ... Atunci. ... ... Altfel, diferite expresii sunt evaluate pentru fiecare afirmație Elself. Dacă. ... ... Atunci. ... ... Altfel poate fi înlocuit cu Select Case doar dacă instrucțiunea If și fiecare instrucțiune Elself evaluează aceeași expresie.
Până acum, am luat în considerare procedurile și funcțiile pe care VBA le execută într-o ordine liniară - VBA începe executarea codului de la prima instrucțiune după linia de declarație procedură (funcție) și continuă să execute fiecare instrucțiune linie cu linie până când se ajunge la instrucțiunea End Sub (Funcție finală) ... Un astfel de algoritm liniar poate fi reprezentat de următoarea diagramă bloc:
Cu toate acestea, este destul de obișnuit ca o procedură sau o funcție să efectueze acțiuni diferite în condiții diferite. Această situație este ilustrată de următoarele diagrame bloc:
Operatorii care îndeplinesc rolul de ramificare a unui program pe baza unei condiții sunt numiți operatori de salt condiționat.
Cei mai simpli operatori de salt condiționat sunt operatorii Daca atunci; Dacă..Atunci..Altfel... Prima declarație vă permite să selectați o singură ramură a procedurii (diagrama de stânga), în timp ce a doua vă permite să alegeți dintre două ramuri alternative ale codului de procedură (diagrama de flux dreaptă) pe baza evaluării dacă condiția este adevărată sau falsă.
Dacă..Atunci sintaxă
Opțiunea 1:
Dacă Condiție Atunci Declarații
Opțiunea 2:
Dacă Condiție Atunci
Declarații
End If
Condiție - expresie logică;
Declarații
Prima opțiune necesită scrierea unui operator într-o singură linie, în timp ce în secțiunea Declarații puteți specifica mai mulți operatori, separându-i cu două puncte.
Logica este următoarea: VBA evaluează mai întâi expresia booleană prezentată în secțiunea Condiție; dacă această expresie booleană este Adevărată, atunci se execută instrucțiunile din secțiunea Instrucțiuni; atunci VBA continuă să execute codul urmând linia If..Then (Opțiunea 1) sau cuvintele cheie End If (Opțiunea 2). Dacă expresia logică este Falsă, atunci instrucțiunile secțiunii Instrucțiuni sunt omise și codul care urmează acestei secțiuni este executat.
Mai jos este o listă a utilizării elementare a primei variante de scriere If..Atunci:
Și acum pentru a doua opțiune:
Rețineți că instrucțiunile secțiunii Instrucțiuni sunt indentate (folosind file). Acesta este un punct important. Ar trebui să vă obișnuiți imediat cu un astfel de design al codului programului - acest lucru mărește lizibilitatea acestuia și facilitează foarte mult căutarea erorilor.
Sintaxă Dacă..Atunci..Altfel
Opțiunea 1:
Dacă Condiție Atunci Declarații Altfel ElseStatements
Opțiunea 2:
Dacă Condiție Atunci
Declarații
Altfel
ElseStatements
End If
Condiție - expresie logică;
Declarații, ElseStatements - una, mai multe sau nici o declarație VBA.
Prin analogie cu If..Atunci - prima opțiune necesită scrierea unui operator într-o singură linie, în timp ce în secțiunile Declarații și ElseStatements puteți specifica mai mulți operatori, separându-i cu două puncte.
A doua opțiune vă permite să specificați mai mulți operatori pe linii diferite.
Logica este următoarea: VBA evaluează mai întâi expresia booleană prezentată în secțiunea Condiție; dacă această expresie booleană este Adevărată, atunci se execută instrucțiunile din secțiunea Instrucțiuni; atunci VBA continuă să execute codul urmând linia If..Then (Opțiunea 1) sau cuvintele cheie End If (Opțiunea 2). Dacă expresia logică este False, atunci se execută operatorii secțiunii ElseStatements.
Operatori VBA de bază
Comentarii (0)
3.1. Reguli de înregistrare a operatorului
Atunci când înregistrați operatorii, trebuie să respectați următoarele reguli:
Fiecare declarație nouă este scrisă pe o nouă linie.
Pentru a scrie mai mulți operatori pe o singură linie, separați-i cu două puncte (:).
Dacă operatorul nu se potrivește pe o singură linie, atunci trebuie să puneți un spațiu și o subliniere (_) la sfârșitul liniei și apoi continuați partea care nu se potrivește pe linia următoare.
3.2. Operator de misiune
Operatorul de alocare este utilizat dacă unei variabile trebuie să i se atribuie o nouă valoare. Are următoarea sintaxă:
NUME VARIABILĂ= EXPRESIE
Expresia din partea dreaptă este evaluată mai întâi, iar apoi rezultatul este atribuit variabilei din partea stângă.
de exemplu... Scrieți următoarea expresie matematică folosind operatorul de atribuire:
În VBA, această expresie poate fi scrisă ca următorul operator:
Y \u003d a ^ (1/3) + (a ^ 2 + Exp (-b)) / (Sin (a) ^ 2-Log (b))
3 .3. Operatori I / O
3 .3.1. Operator și funcție MsgBox
Operator MsgBox efectuează informații de ieșire în caseta de dialog și setează modul de așteptare pentru apăsarea butonului de către utilizator.
Are următoarea sintaxă:
MsgBox Mesaj [, Butoane] [, Titlu]
Argumente:
Mesaj - argumentul necesar care specifică mesajul informațional care trebuie afișat în fereastră. Poate consta din mai multe linii de text, concatenate de un semn & ... Utilizare în acest argument Chr (13) duce la o nouă linie atunci când afișează informații.
Butoane - valoarea acestui argument determină categoriile de butoane care apar în fereastră. Valoarea argumentului butonului determină, de asemenea, dacă apare o pictogramă în fereastră. Dacă nu specificați ce butoane trebuie afișate în fereastra de mesaje, atunci se utilizează valoarea implicită corespunzătoare butonului OK. Masa 3.1 afișează combinațiile posibile de butoane și pictograme în fereastra de mesaje.
Titlu - setează titlul ferestrei.
Funcţie MsgBox returnează un întreg indicând care buton a fost făcut clic în caseta de dialog.
Tabelul 3.1. Valori valide pentru variabila buton
Afişa |
Argument |
Butonul OK |
|
Butoane OK și Cancel |
|
Butoanele Da și Nu |
|
Da, nu și butoane Anulare |
|
Butoanele Stop, Reface și Ignoră |
VbAbortRetryIgnore |
Butoane Refaceți și Anulați. |
|
Semn informativ |
|
Semnul întrebării |
|
Semnul exclamarii |
de exemplu... Afișați un mesaj despre data curentă.
MsgBox „Astăzi este în calendar” & Data, „Atenție”
Ca rezultat, va fi afișată următoarea fereastră (Fig. 3.1).
După ce faceți clic pe butonul OK, caseta de mesaj se va închide și executarea programului va fi reluată din declarația imediat din spatele apelului către MsgBox.
3.3.2. Funcţie InputBox
Funcţie InputBoxintroduce valorile variabilelor folosind fereastra de intrare și are următoarea sintaxă:
VariableName = InputBox (Mesaj [, Titlu] )
Argumente:
Mesaj - argumentul necesar. Setează un mesaj informațional în fereastră, explicând de obicei semnificația valorii introduse
Titlu - setează titlul ferestrei.
de exemplu, Introduceți valoarea variabilei N de la tastatură, cu o valoare implicită de 10.
Pentru a face acest lucru, puteți utiliza următorul operator:
N \u003d InputBox („Introduceți N”, „Introducere date inițiale”, 10)
Ca rezultat, va fi afișată următoarea fereastră pentru introducerea valorii variabilei N (Fig. 3.2).
Dacă valoarea implicită se potrivește utilizatorului, atunci după ce faceți clic pe butonul OK, fereastra de intrare se va închide, variabilei N i se va atribui valoarea 10, iar execuția programului va fi reluată din declarația imediat din spatele apelului. InputBox.
Dacă valoarea implicită nu se potrivește cu utilizatorul, atunci înainte de a face clic pe butonul OK, trebuie să introduceți valoarea dorită pentru variabila N.
3 .4. Declarație IF condiționată
Pentru a implementa un proces de calcul ramificat în VBA, se folosește operatorul Dacă ... Atunci ... Altfel, care este cea mai simplă formă de verificare a stării. Are următoarea sintaxă:
DacăCONDIȚIE AtunciOPERATOR_1 ElseOPERATOR_2
OPERATOR_1 se execută dacă CONDIȚIEadevărat, altfel executat OPERATOR_2. În acest caz, declarația Dacă ... Apoi ... Altceva este scrisă pe un singur rând.
CONDIȚIE este o expresie booleană. Rezultatul unei expresii este întotdeauna boolean. Expresia poate fi simplă sau complexă. Când scrieți condiții simple, pot fi utilizate toate operațiile posibile ale relației indicate în tabel. 3.2.
Masa3 .2. Relația logică
Operațiune |
Nume |
Expresie |
Rezultat |
Adevărat dacă A este egal cu B |
|||
Adevărat dacă A nu este egal cu B |
|||
Adevărat dacă A este mai mare decât B |
|||
Adevărat dacă A este mai mic decât B |
|||
Mai mult sau egal |
Adevărat dacă A este mai mare sau egal cu B |
||
Mai puțin sau egal |
Adevărat dacă A este mai mic sau egal cu B |
Condițiile complexe se formează din cele simple prin utilizarea operațiilor logice și a parantezelor. Lista operațiunilor logice este dată în tabel. 3.3.
Masa3 .3. Operații logice
Nume |
Expresie |
Rezultat |
|||
Logic |
|||||
Logic ȘI |
|||||
OR logic |
Într-o declarație condiționată, este permisă utilizarea unui bloc de instrucțiuni în locul oricărei declarații. În acest caz, operatorul condițional este:
DacăCONDIȚIE Atunci
OPERATOR_BLOCK_1
OPERATOR_BLOCK_2
Sfârșitul If
Mai multe condiții pot fi verificate într-o declarație condiționată. În acest caz, operatorul condițional este:
DacăCONDITION_1 Atunci
OPERATOR_BLOCK_1
AltfelDacăCONDITION_2Atunci
OPERATOR_BLOCK_2
Altfel
SfârșitDacă
Exemplul 1... Scrieți o parte a programului pentru algoritmul din Fig. 3.3.
Exemplul 2. Scrieți o parte a programului pentru algoritmul din Fig. 3.4.
3.5. Selectați declarația de caz
Instrucțiunea Select Case este convenabilă de utilizat atunci când, în funcție de valoarea unei expresii care are un set finit de valori valide, trebuie să efectuați acțiuni diferite. De asemenea, se referă la enunțuri condiționate, dar are o formă diferită:
Selectați Caz TESTED_EXPRESSION
Caz VALORI_1
OPERATORI_1
Caz VALORI_ 2
OPERATORI_ 2
. . .
Caz VALUES_N
OPERATORI_N
[ CazAltfel
ALTE_ OPERATORI]
Selectare sfârșit
TESTED_EXPRESSION poate fi de orice tip scalar, cu excepția realului. VALORI constau dintr-un număr arbitrar de valori sau intervale, separate prin virgule.
Un fel VALORI trebuie să se potrivească tipului TESTED_EXPRESSION.
În primul rând, calculat TESTED_EXPRESSION... Dacă valoarea sa se potrivește cu una dintre valori VALORI_I, atunci OPERATORI_I Selectare sfârșit... Dacă valoarea sa nu se potrivește cu niciuna dintre valori VALORI_I, atunci OTHERWISE_OPERATORS iar controlul este transferat operatorului care stă după Selectare sfârșit
De exemplu. Scrieți o parte a programului pentru algoritmul din Fig. 3.5, care determină valoarea variabilei S în funcție de valoarea variabilei n.
3.6. Operatori de bucle
Pentru a implementa un proces de calcul ciclic, adică executarea multiplă a unuia sau mai multor operatori, se folosește operatorul de buclă Pentru următorulcare are următoarea sintaxă:
PentruCONTOR \u003d START_VALUE ToCON_VALUE EtapaETAPA
BLOC OPERATOR
BLOC OPERATOR
Următor →TEJGHEA
Bucla For ... Next iterează peste valorile variabilei TEJGHEA, care este un parametru al ciclului, de la începutul până la valoarea finală cu pasul de modificare specificat. Acest lucru asigură că blocul de instrucțiuni al corpului buclei este executat la fiecare nouă valoare a contorului. Dacă EtapaETAPAeste absent în construcție, apoi implicit se presupune că pasul este 1. Potrivit operatorului Ieșiți pentrueste posibil să ieșiți din instrucțiunea buclă înainte TEJGHEAatinge ultima valoare. *
Pentru a itera peste obiecte dintr-un grup de obiecte similare, de exemplu, celule dintr-o gamă sau elemente de matrice, este convenabil să utilizați operatorul de buclă Pentru ...Fiecare ... În continuare.
Pentru fiecareElement Îngrup
BLOC_ OPERATORI
BLOC OPERATOR
Următor →Element
În VBA, alți operatori de bucle sunt folosiți pentru a organiza bucle cu un număr prestabilit de repetări:
bucle cu condiție prealabilă - DoIn timp ce … Buclă,
DoPana cand … Buclă;
bucle cu postcondiție - Do … BuclăIn timp ce,
Do … BuclăPana cand.
Urmează sintaxa pentru aceste instrucțiuni de buclă:
„Buclă cu condiție prealabilăDo In timp ce … Buclă
Face în timp ceCONDIȚIE
BLOC OPERATOR
BLOC OPERATOR
„Buclă cu condiție prealabilăDo Pana cand … Buclă
DoPana candCONDIȚIE
BLOC OPERATOR
BLOC OPERATOR
„Buclă cu postcondițieDo … Buclați în timp ce
BLOC_ OPERATORI
BLOC OPERATOR
Buclați în timp ceCONDIȚIE
„Buclă cu postcondițieDo … Bucla până
BLOC_ OPERATORI
BLOC OPERATOR
Bucla pânăCONDIȚIE
Operator DoWsalut ... Buclăoferă repetări multiple ale unui bloc de afirmații atâta timp cât CONDIȚIE este observat, iar operatorul
Alte știri
3.5.1 Operatori de sucursale condiționați și necondiționați. Operator Dacă ... Atunci ... Altfel
Verificarea condițiilor în VBA, If ... Atunci ... Instrucțiune Else, instrucțiuni If imbricate
Operatori de salt condiționat sunt unele dintre cele mai importante și frecvent utilizate elemente în limbajele de programare. Principiul general al funcționării lor este simplu: respectarea unor condiții este verificată (adevărul sau falsitatea oricărei expresii) și, în funcție de aceasta, execuția programului este direcționată de-a lungul uneia sau altei ramuri. VBA oferă două instrucțiuni de ramură condiționate: Dacă ... Apoi ... Altfel și Selectați caz.
Operator Daca atunci... Altfel este cel mai popular printre programatori. Sintaxa sa completă arată astfel:
Dacă starea atunci
Echipe1
Unde:
- Condiție - o expresie testată pentru adevăr. Dacă este adevărat, atunci se execută Comenzi1, dacă este fals - Comenzi2;
- CondițiiN - condiții suplimentare care pot fi verificate și. Dacă sunt executate (expresia ConditionN este adevărată), atunci ComenzileN sunt executate.
Se aplică declarația If ... Then ... Else:
- când trebuie să verificați conformitatea cu o condiție și, dacă se potrivește, faceți o acțiune:
Dacă nTemperatură< 10 Then
MsgBox „Pune-ți o jachetă”
- când trebuie să faceți același lucru ca în exemplul anterior și, în caz de inconsecvență, efectuați o altă acțiune:
Dacă nTemperatură< 10 Then
MsgBox „Pune-ți o jachetă”
MsgBox „Pune-ți un jachetă”
- când trebuie să verificați mai multe condiții (rețineți utilizarea operatorilor booleeni):
Dacă (nTemperature< 10) And (bRain = True) Then
MsgBox „Pune-ți o jachetă și ia o umbrelă”
- când, dacă prima verificare a fost returnată False, trebuie să verificați dacă sunt respectate mai multe condiții (în acest caz, este convenabil să utilizați ElseIf):
Dacă (bIGoInCar \u003d Adevărat) Atunci
MsgBox „Rochie pentru mașină”
ElseIf nTemperature< 10 Then
MsgBox „Pune-ți o jachetă”
MsgBox „Poți purta o cămașă”
În acest exemplu, deoarece bIGoInCar este o variabilă booleană și este în sine adevărat sau fals, prima linie ar putea arăta astfel:
Dacă bIGoInCar, atunci ...
Câteva note despre utilizarea If ... Atunci ... Altfel:
- cuvântul cheie Then trebuie să fie pe aceeași linie cu If și condiția. Dacă îl mutați pe linia următoare, va fi afișat un mesaj de eroare;
- dacă plasați comanda care trebuie executată dacă condiția verificată este adevărată, pe aceeași linie cu If și Then, atunci End If poate fi omis:
Dacă nTemperatură< 10 Then MsgBox "Одеть куртку"
- dacă utilizați mai multe comenzi sau construcții Else / ElseIf, atunci End If trebuie scris la sfârșit, altfel va apărea o eroare de sintaxă.
- pentru expresia If ... Then, este recomandat să folosiți indentare pentru a evidenția blocurile de comandă. În caz contrar, va fi dificil să citiți codul.
- dacă ... Atunci instrucțiunile pot fi imbricate una în cealaltă:
Dacă MyVar \u003d 5 Atunci
MsgBox „MyVar \u003d 5”
Dacă MyVar \u003d 10 Atunci
MsgBox „MyVar \u003d 10”