VBA On Error Goto 0 | Paano Magamit Sa Error GoTo 0 sa Excel VBA?
Ang Excel VBA Sa Error Goto 0
VBA On Error GoTo 0 ay isang pahayag ng handler ng error na ginamit upang hindi paganahin ang pinagana na error handler sa pamamaraan. Ito ay tinukoy bilang "Error Handler Disabler".
Ang error sa paghawak sa alinman sa mga wika ng programa ay isang master class na kailangang maunawaan ng lahat ng mga coder. Wika ng programa ng VBA din, at mayroon din kaming mga diskarte sa paghawak ng error sa wikang ito sa pagprogram. Ang "On Error Resume Next" ay nagbibigay-daan sa handler ng error at "Sa Error GoTo 0" ay hindi pagaganahin ang pinagana ng handler ng error.
Parehong "Sa Susunod na Ipagpatuloy ang Error" at "Sa Error GoTo 0" ay mga pares na kailangang gamitin kasabay ng kahusayan ng code. Upang mahawakan ang error kailangan naming magsimula sa pahayag na "On Error Resume Next" at upang wakasan ang handler ng error na ito kailangan naming gamitin ang pahayag na "On Error GoTo 0".
Anumang linya ng code na nakasulat sa pagitan ng mga pahayag na ito ay hindi papansinin ang anumang uri ng error na naganap sa mga paglilitis.
Paano gamitin ang On Error GoTo 0 na Pahayag?
Maaari mong i-download ang VBA On Error Goto 0 Excel Template dito - VBA On Error Goto 0 Excel TemplatePara sa isang halimbawa tingnan ang code sa ibaba.
Code:
Sub On_ErrorExample1 () Mga Worksheet ("Sheet1"). Piliin ang Saklaw ("A1"). Halaga = 100 Mga Worksheet ("Sheet2"). Piliin ang Saklaw ("A1"). Halaga = 100 End Sub
Ang ginagawa sa itaas na code ay pipiliin muna nito ang worksheet na pinangalanang "Sheet1" at sa cell A1 ipasok nito ang halagang 100.
Code:
Mga worksheet ("Sheet1"). Piliin ang Saklaw ("A1"). Halaga = 100
Pagkatapos pipiliin nito ang worksheet na pinangalanang "Sheet2" at ipasok ang parehong halaga.
Code:
Mga worksheet ("Sheet2"). Piliin ang Saklaw ("A1"). Halaga = 100
Ngayon mayroon akong mga sheet sa ibaba sa aking workbook.
Walang mga sheet na tinatawag na "Sheet1" at "Sheet2", kapag pinatakbo namin ang code ay makaka-engkwentro ito ng isang error tulad ng nasa ibaba.
Dahil walang sheet na pinangalanan bilang "Sheet1" nakatagpo ito ng error na "Subscript na wala sa saklaw". Upang hawakan ang error na ito magdagdag ako ng isang pahayag ng handler ng error na "Sa Error Ipagpatuloy ang Susunod" sa tuktok ng macro.
Code:
Sub On_ErrorExample1 () Sa Error Ipagpatuloy ang Mga Susunod na Worksheet ("Sheet1"). Piliin ang Saklaw ("A1"). Halaga = 100 Mga Worksheet ("Sheet2"). Piliin ang Saklaw ("A1"). Halaga = 100 End Sub
Patakbuhin ngayon ang code at tingnan kung ano ang nangyayari.
Hindi ito magbibigay ng anumang mga mensahe ng error dahil ang pahayag ng handler ng error Sa Error Ipagpatuloy ang Susunod ay pinagana.
Isipin ang senaryo kung saan kailangan nating balewalain ang error sa kaso ng hindi pagkakaroon ng worksheet na "Sheet1" ngunit kailangan naming abisuhan kung walang worksheet na tinatawag na "Sheet2".
Dahil nagdagdag kami Sa Error Ipagpatuloy ang Susunod sa tuktok, nagsimula itong hawakan ang error ngunit sa parehong oras, kailangan naming tukuyin kung gaano karaming mga linya ang kailangan nating balewalain ang error na ito.
Sa halimbawang ito, kailangan lamang naming balewalain ang error para sa unang worksheet ngunit para sa pangalawang sheet pasulong kailangan namin ng error na maganap kung walang worksheet na "Sheet2". Kaya pagkatapos ng unang worksheet code ay nagdaragdag ng error hindi paganahin ang linya Sa Error GoTo 0.
Code:
Sub On_ErrorExample1 () Sa Error Ipagpatuloy ang Mga Susunod na Worksheet ("Sheet1"). Piliin ang Saklaw ("A1"). Halaga = 100 Sa Error GoTo 0 Mga Worksheet ("Sheet2"). Piliin ang Saklaw ("A1"). Halaga = 100 End Sub
Patakbuhin ngayon ang linya ng code sa pamamagitan ng linya upang makita ang epekto sa pamamagitan ng pagpindot sa F8 key.
Ngayon kung pipindutin mo ang F8 key sa sandaling ang pagpapatupad ng code ay tumalon sa susunod na linya at ang aktibong gawain ng linya ay papatayin. Ngayon ang aktibong linya (dilaw na kulay na linya) ay "Sa Error Ipagpatuloy ang Susunod" na handler ng error at ang handler ng error ay paganahin.
Ngayon anumang error na nangyayari ay hindi ito papansinin hanggang sa maipatupad nito ang error sa handler na hindi pinagana ang code na "Sa Error GoTo 0”Pahayag.
Sa nakaraang pagtatangka, nakaranas kami ng mga error ngunit pindutin ang F8 key nang isa pang beses at makita ang mahika.
Nang hindi nagbibigay ng anumang uri ng error ay ipinagpatuloy nito ang pagpapatupad ng code kahit na walang worksheet na "Sheet2" upang mapili. Ngayon pindutin muli ang F8.
Dahil walang Sheet1 hindi nito maaaring ipasok ang halaga sa A1 cell bilang 500 ngunit kung ano ang ginagawa nito ay ipasok nito ang halaga ng 500 sa cell A1 alinmang worksheet ang aktibo. Ang aking aktibong sheet kapag ipinatutupad ko ang code ay "Sheet3", kaya ang halagang 100 ay ipinasok sa cell A1.
Ngayon ang aktibong linya ng code ay "Sa Error GoTo 0”, Sa pamamagitan ng pagpindot sa F8 key ang gawain sa linya na ito ay naisasagawa.
Dahil ang "On Error GoTo 0" ay naisakatuparan pinahinto nito ang proseso ng paghawak ng error at muling nagsisimulang magpakita ng mga error kung mayroon man. Pindutin ang F8 key at makita ang error.
Sa nakaraang kaso nang walang On Error GoTo 0, hindi na rin nito pinansin ang error na ito, ngunit dahil nagdagdag kami ng error handler disabler nagsimula na itong ipakita muli ang error.
Mga Bagay na Dapat Tandaan
- Parehong Sa Error Ipagpatuloy ang Susunod at Sa Error GoTo 0 ay kailangang gamitin bilang "Error Handler Enabler"At"Error sa Handler Disabler”.
- Ang anumang linya ng mga code sa pagitan ng dalawang pahayag na ito ay nakatagpo ng isang error na ito ay hindi papansinin.
- Kung mayroong On Error GoTo 0 na pahayag pagkatapos pagkatapos ng paglabas ng subprocedure error handler ay hindi pagaganahin.