VBA Exit Sub | Exit VBA Subprocedure Kung ang Mga Kundisyon ay hindi natutugunan

Excel VBA Exit Sub Pamamaraan

Exit Sub ang pahayag ay lumalabas sa subprocedure nang mas maaga kaysa sa tinukoy na mga linya ng mga VBA code. Gayunpaman, upang lumabas sa subprocedure kailangan naming mag-apply ng ilang uri ng lohikal na pagsubok.

Itayo natin ito sa simpleng mga termino.

 Sub MacroName () '...' Ilang code dito '... Exit Sub' Exit the Sub nang hindi isinasagawa ang karagdagang mga linya ng code sa ibaba '...' Ang code na ito ay hindi papansinin '... End Sub 

Mga halimbawa

Maaari mong i-download ang VBA Exit Sub Excel Template dito - VBA Exit Sub Excel Template

Halimbawa # 1

Para sa isang mas mahusay na halimbawa tingnan ang code sa ibaba.

Code:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 Cells (k, 1). Value = k Susunod k End Sub 

Ang code sa itaas ay magpapasok ng mga serial number mula 1 hanggang 10 sa mga cell A1 hanggang A10.

Ngayon nais kong ipasok lamang ang 5 mga serial number at sa sandaling ang halaga ng variable na "k" ay magiging 6 gusto kong lumabas sa sub.

Para sa mga ito, kakailanganin kong idagdag ang lohikal na pagsubok sa excel bilang KUNG k = 6 Pagkatapos Exit Sub.

Code:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 Kung k = 6 Pagkatapos Exit Sub 'Sa sandaling ang k halaga ay magiging 6 ay hindi papansinin ang lahat ng mga code at lumabas sa Mga Cell (k, 1). Halaga = k Susunod k Tapusin Sub 

Patakbuhin ngayon ang linya ng code sa pamamagitan ng linya. Pindutin ang F8 key upang simulan ang mga paglilitis.

Tulad ng ngayon, ang halaga ng k ay zero.

Upang baguhin ang halaga ng k sa 1 pindutin ang F8 key nang isa pang beses.

Kaya k halaga ay 1 ang aming code ay patuloy na tumatakbo at ipasok ang 1 sa cell A1. Tulad nito panatilihin ang pagpapatakbo ng loop hanggang sa ang halaga ng k ay naging 6.

Ngayon ang halaga ng k ay 6 at ang linya ng code ay malapit nang maisakatuparan ang aming lohikal na pagsubok upang lumabas sa subprocedure. Kung pipindutin ko pa ang F8 key nang isang beses tuwid itong lalabas sa buong sub na pamamaraan lamang.

Tulad ng nakikita natin na na-highlight ang salita "Exit Sub". Sa pagpindot sa F8 key ay lalabas ito sa subprocedure nang hindi pupunta sa salita "Tapusin ang Sub".

Halimbawa # 2 - Sa Error na Lumabas sa Subprocedure

Maaari din kaming lumabas sa subprocedure kapag nakuha namin ang mga halaga ng error. Halimbawa, isaalang-alang ang data sa ibaba ng paghati sa bilang1 mula sa numero 2.

Nasa ibaba ang code upang makuha ang paghahati ng dalawang numero.

Code:

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

Tulad ng alam naming hindi namin maaaring hatiin ang anumang numero sa zero. Kaya't kung susubukan nating gawin iyon makakakuha kami ng error bilang Run Time Error '11': Division By Zero.

Upang maiwasan ito sa lalong madaling makaharap kami ng anumang error ay babanggitin ko ang aking macro na lumabas sa subprocedure na may agarang epekto. Ang code sa ibaba ay isang kaso.

Code:

 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). Halaga Susunod k ErrorHandler: Exit Sub Wakas Sub 

Sa halimbawa sa itaas, nabanggit ko ang pahayag na "Sa Error Goto ErrorHandler". Narito ang salitang ErrorHandler ay ang tatak na aking itinalaga. Kung maaari mong makita sa ilalim ng code nabanggit ko ang label bilang

ErrorHandler: Exit Sub 

Kaya't sa lalong madaling makatagpo ng isang error ang code ay itutulak nito ang code upang tumalon sa label at ang label ay may pahayag na "Exit Sub", sa gayon ay lalabas sa subprocedure.

Ngayon tatakbo ko ang code, makakalkula nito ang paghahati hanggang sa makahanap ito ng isang error.

Tulad ng nakikita mo sa cell C7 nakatagpo ito ng isang error bilang "Division by Zero" kaya lumabas ito sa subprocedure. Nang walang pagpapaalam sa gumagamit ng paglabas ng subprocedure ay palaging isang mapanganib na bagay. Upang ipaalam sa gumagamit ang tungkol sa error maaari kaming magsama ng isang maliit na kahon ng mensahe.

Code:

 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). Halaga Susunod k ErrorHandler: MsgBox " Nagkaroon ng Error at ang error ay: "& vbNewLine & Err.Description Exit Sub End Sub 

Ipapakita ng code sa itaas ang mensahe ng error pagkatapos ay lumabas sa subprocedure. Habang tumatakbo ang code kung may naganap na error ipapakita nito ang kahon ng mensahe sa VBA tulad ng sa ibaba.

Ito ay higit pa sa isang maaasahang paraan ng paglabas ng Sub Pamamaraan.