VBA On Error GoTo | Mga uri ng On Error Statement sa VBA

Ang Excel VBA Sa Error GoTo

Ang mga pagkakamali ay bahagi at bahagi ng anumang wika ng pag-cod at ang VBA macros ay hindi naiiba mula rito. Sa aking palagay, ang paghahanap ng kung bakit nangyayari ang error ay 90% ng tapos na trabaho at 10% nakasalalay sa kung paano ayusin ang error na iyon. Sa bawat coding ng wikang coding ay gumagamit ng kanilang sariling paraan ng paghawak ng mga error sa kanilang pag-coding, sa gayon ay ginagamit din namin sa VBA coding. Kadalasan mga oras na kailangan nating balewalain ang error o madalas na mga beses na nais nating pumunta sa mga tukoy na bagay kapag nangyari ang error. Ang "Sa Error" ay ang pahayag na kailangan naming gamitin sa VBA upang mahawakan ang mga error.

Ang pahayag na ito ay may tatlong uri ng mga pahayag at sa ibaba ang listahan.

  1. Sa Error Goto 0
  2. Sa Error Goto [label]
  3. Sa Error Ipagpatuloy ang Susunod

Sa artikulong ito, makikita natin kung paano ginagamit ang tatlong pahayag na ito sa VBA coding upang mahawakan ang anumang uri ng mga error.

Paano magagamit ang Mga Pahayag ng Error sa VBA?

Maaari mong i-download ang VBA On Error na GoTo Statement Template na ito - VBA On Error GoTo Statement Template

# 1 - Sa Ipagpatuloy ang Error sa Susunod

Tulad ng sinabi mismo ng pahayag na "Sa Error Ipagpatuloy ang Susunod" ay nangangahulugang tuwing nangyayari ang error sa code na "ipagpatuloy" ang susunod na linya ng code sa pamamagitan ng hindi pagpapansin sa code ng error line. Tingnan ngayon ang code sa ibaba.

Sa code sa ibaba nabanggit ko ang mga pangalan ng worksheet at hiniling na ipasok ang halaga sa unang cell bilang "Error Testing".

Code:

 Sub On_Error_Resume_Next () Mga Worksheet ("Ws 1"). Piliin ang Saklaw ("A1"). Halaga = "Pagsubok sa Error" Mga Worksheet ("Ws 2"). Piliin ang Saklaw ("A1"). Halaga = "Mga Pagsubok sa Error" Mga Worksheet ( "Ws 3"). Piliin ang Saklaw ("A1"). Halaga = "Error Testing" Mga Worksheet ("Ws 4"). Piliin ang Saklaw ("A1"). Halaga = "Pagsubok sa Error" End Sub 

Ngayon ay mayroon akong mga worksheet sa ibaba sa aking workbook.

  • Tatakbo ko ang code at tingnan kung ano ang mangyayari.

  • Nakuha namin ang error na "Subscript Out of Range", mag-click sa "Debug" upang makita sa aling linya nakuha namin ang error.

  • Kaya sa linya na "Mga Worksheet (" Ws 3 "). Piliin" nakakuha kami ng isang error, ito ay dahil sa aming workbook walang worksheet na pinangalanan bilang "Ws 3", kaya nakaranas ng isang error.

Sa ganitong mga kaso maaari naming balewalain ang error at ipagpatuloy ang pagpapatupad ng code sa susunod na linya, dito napupunta sa larawan ang aming handler ng "On Error Resume Next".

  • Ang kailangan lang nating gawin ay idagdag ang linya na "Sa Error Resume Susunod" sa simula ng macro.

Ipatupad ngayon ang code na ito at hindi ito magpapakita ng anumang mensahe ng error dahil tuwing nakakasalubong ang isang code ay hindi nito papansinin ang error at ipagpatuloy sa susunod na linya ng code.

# 2 - Sa Error GoTo 0

Hindi ito isang handler ng error sa halip ang pagpapagana ng mensahe ng error pagkatapos naming hindi paganahin ang mensahe ng error sa pamamagitan ng paggamit ng pahayag na "On Error Resume Next".

Ang isa ay ginagamit mo ang pahayag na "Ipagpatuloy ang Susunod" na nagsisimula ang mga macros na VBA na huwag pansinin ang anumang uri ng error na nangyayari at patuloy na nagpapatuloy sa susunod na linya ng mga code. Ngunit hindi namin ito nais na mangyari sa lahat ng oras dahil ang ilang mga pagkakamali na kailangan nating balewalain sinasadya iba pa kailangan namin ng isang abiso.

Kung ang anumang tukoy na hanay ng code ay nagtatapon ng isang error sa pag-block ng code lamang kailangan naming balewalain ang error sa iba pang mga bahagi ng code na hindi namin nais na balewalain ang error.

  • Tingnan ang imahe sa ibaba para sa paggamit ng pahayag na "On Error GoTo 0".

Kaya't ang mga error ay hindi papansinin hanggang sa mahahanap ng code ang error na abisuhan ang tagapagpaandar na "Sa Error GoTo 0". Kapag ang linya ng code na ito ay nagpapatupad ng macros pabalik sa normal at nagsisimulang magtapon ng mga mensahe ng error tulad ng dati.

# 3 - Sa Error GoTo Label

Nakita namin kung paano balewalain ang error at kung paano paganahin ang pabalik na ipaalam sa error. Ngayon gamit ang pamamaraang ito maaari kaming pumunta sa isang tukoy na linya ng code.

Sa pamamaraang ito ang "Label" ay nangangahulugang maaari naming ibigay ang anumang pangalan sa label na ito at ang parehong label ay dapat ibigay sa kinakailangang linya ng code din.

Halimbawa, tingnan ang parehong code mula sa halimbawa sa itaas.

Ipatupad natin ngayon ang linya ng code sa pamamagitan ng linya sa pamamagitan ng pagpindot sa F8 function key.

Ngayon babasahin ng macro ang pahayag ng handler ng error, pindutin ang F8 key na ipatupad ang unang 2 worksheet code.

Ngayon ay malapit nang ipatupad ng macro ang ikatlong worksheet code na wala doon sa workbook, pindutin ang F8 key, at tingnan kung ano ang nangyayari.

Dahil nakatagpo ng isang error ang macro sa linya sa ibaba ng code lumundag ito sa label na handler ng error "Maling mensahe" na inilarawan sa pamamagitan ng pahayag na "On Error GoTo [Label]".

Ngayon ang kahon ng mensahe ay ipapakita ang mensahe bilang "Error na Naganap at Paglabas ng Macro".

Bagay na dapat alalahanin

  • Ang VBA On Error GoTo 0 ay magbibigay-daan muli sa notification ng error, kaya huwag kalimutang idagdag ito pagkatapos na magbigay ng isang handler ng error.
  • Kailangan mong tiyakin nang lubos kung aling bahagi ng code ang nais mong balewalain ang error, kaya isara lamang ang handler ng error para sa bloke ng code.