VBA Exit Sub | Ieșiți din subprocedura VBA dacă nu sunt îndeplinite condițiile

Excel VBA Exit Sub Procedură

Instrucțiunea Exit Sub iese din subprocedură mai devreme decât liniile definite ale codurilor VBA. Cu toate acestea, pentru a ieși din subprocedură trebuie să aplicăm un fel de test logic.

Să construim acest lucru în termeni simpli.

 Sub MacroName () "..." Un cod aici "... Ieșiți din Sub" Ieșiți din Sub fără a executa alte linii de cod de mai jos "..." Acest cod va fi ignorat "... End Sub 

Exemple

Puteți descărca acest șablon VBA Exit Sub Excel aici - Șablon VBA Exit Sub Excel

Exemplul nr. 1

Pentru un exemplu mai bun, consultați codul de mai jos.

Cod:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 Cell (k, 1). Valoare = k Next k End Sub 

Codul de mai sus va insera numere de serie de la 1 la 10 în celulele A1 până la A10.

Acum vreau să introduc doar 5 numere de serie și de îndată ce valoarea variabilei „k” devine 6 vreau să ies din sub.

Pentru aceasta, va trebui să adaug testul logic în excel ca IF k = 6 Apoi Exit Sub .

Cod:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 If k = 6 Then Exit Sub 'Imediat ce valoarea k devine 6 va ignora toate codurile și va ieși din celule (k, 1). Valoare = k Next k End Sub 

Acum rulați codul rând cu rând. Apăsați tasta F8 pentru a începe procedura.

De acum, valoarea k este zero.

Pentru a schimba valoarea k la 1 apăsați încă o dată tasta F8.

Deci, valoarea k este 1 codul nostru continuă să ruleze și va insera 1 în celula A1. În acest fel, continuați să rulați bucla până când valoarea lui k devine 6.

Acum valoarea lui k este 6, iar linia de cod este pe cale să execute testul nostru logic pentru a ieși din subprocedură. Dacă mai apăs tasta F8 încă o dată, va ieși direct numai din întreaga procedură secundară.

După cum putem vedea, a evidențiat cuvântul „Exit Sub” . La apăsarea tastei F8 va ieși din subprocedură fără a merge la cuvântul „Încheiere sub” .

Exemplul # 2 - La eroare Ieșiți din subprocedură

De asemenea, putem ieși din subprocedură atunci când obținem valorile erorii. De exemplu, luați în considerare datele de mai jos pentru a împărți numărul 1 de numărul 2.

Mai jos este codul pentru a obține împărțirea a două numere.

Cod:

 Sub Exit_Example2 () Dim k As Long For k = 2 To 9 Cells (k, 3). Valoare = Cells (k, 1). Valoare / Cells (k, 2). Valoare Next k End Sub 

După cum știm, nu putem împărți niciun număr la zero. Deci, dacă încercăm să facem acest lucru, vom primi eroarea ca Run Time Error '11': Division By Zero.

Pentru a evita acest lucru de îndată ce vom întâlni orice eroare, voi menționa macro-ul meu pentru a ieși din subprocedură cu efect imediat. Codul de mai jos este un astfel de caz.

Cod:

 Sub Exit_Example2 () Dim k As Long For k = 2 to 9 On Error GoTo ErrorHandler Cells (k, 3) .Value = Cells (k, 1). Valoare / Cells (k, 2). Valoare Next k ErrorHandler: Exit Sub Sfârșitul Sub 

În exemplul de mai sus, am menționat declarația „On Error Goto ErrorHandler”. Aici cuvântul ErrorHandler este eticheta pe care am atribuit-o. Dacă puteți vedea în partea de jos a codului am menționat eticheta ca

ErrorHandler: Exit Sub 

Deci, de îndată ce codul întâlnește o eroare, acesta va împinge codul pentru a trece la etichetă, iar eticheta are declarația „Exit Sub”, așa că va ieși din subprocedură.

Acum voi rula codul, va calcula diviziunea până când va găsi o eroare.

După cum puteți vedea în celula C7, a întâmpinat o eroare ca „Divizare după zero”, deci a ieșit din subprocedură. Fără a informa utilizatorul care iese din subprocedură este întotdeauna un lucru periculos. Pentru a informa utilizatorul despre eroare putem include o mică casetă de mesaj.

Cod:

 Sub Exit_Example2 () Dim k As Long For k = 2 to 9 On Error GoTo ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: MsgBox " Eroarea a avut loc și eroarea este: "& vbNewLine & Err.Description Exit Sub End Sub 

Codul de mai sus va afișa mesajul de eroare, apoi va ieși din subprocedură. În timp ce executați codul dacă apare o eroare, va afișa caseta de mesaj în VBA ca mai jos.

Acesta este mai mult un mod fiabil de a ieși din subprocedură.