Declarații de condiție vba. Operatori de sucursale VBA: o alegere simplă

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
2
3
4
5

Sub IF_FUNCTION ()
Dacă 7\u003e 1 Apoi
MsgBox "7 este mai mare decât 1"
End If
Sfârșitul Sub

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 ()
Dacă 7\u003e 1, atunci MsgBox "7 este mai mare decât 1"
Sfârșitul Sub

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
2
3
4
5
6
7

Sub IF_ELSEIF_FUNCTION ()
Dacă 1\u003e 4 Atunci

Altfel:
MsgBox „1 este mai mic decât 4”
End If
Sfârșitul Sub

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
2
3
4
5
6
7
8
9
10
11


Dacă< \u003e Apoi
MsgBox „1 este mai mare decât 4”
AltfelDacă< \u003e Apoi

AltfelDacă< \u003e Apoi

Altfel< >:

End If
Sfârșitul Sub

Î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
2
3
4
5
6
7
8
9
10
11

Sub IF_ELSEIF_ELSE_FUNCTION ()
Dacă 1\u003e 4 Atunci
MsgBox „1 este mai mare decât 4”
ElseIf 2\u003e 4 Apoi
MsgBox "2 este mai mare decât 4"
ElseIf 3\u003e 4 Apoi
MsgBox "3 este mai mare decât 4"
Altfel:
MsgBox „1, 2 sau 3 sunt mai mici de 4”
End If
Sfârșitul Sub

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
negare

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 ceBuclă,

DoPana candBuclă;

bucle cu postcondiție - DoBuclăIn timp ce,

DoBuclă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”