VBA Sa Mga Pahayag ng Error | Nangungunang 3 Mga Paraan upang Pangasiwaan ang Mga Error

Ang Excel VBA Sa Error na Pahayag

Error sa VBA Ang pahayag ay isang uri ng mekanismo ng paghawak ng error na ginagamit upang gabayan ang code upang gawin kung makasalubong nito ang anumang uri ng error, sa pangkalahatan kapag ang isang code ay nakatagpo ng isang error tumitigil ang pagpapatupad ngunit sa pahayag na ito sa code ang pagpapatupad ng code ay nagpapatuloy bilang nagtakda ito ng mga tagubilin na dapat gawin kapag nakatagpo ito ng isang error.

Ang pag-anticipate ng error sa code ay gumagawa ka ng isang pro sa VBA coding. Hindi mo maaaring gawing mahusay ang code na 100%, kahit na kumpiyansa ka sa iyong code sa isa o ibang paraan na maaaring magtapon ng isang error.

Ito ay halos isang imposibleng gawain upang makilala at hawakan ang bawat uri ng error, ngunit mayroon kaming iba't ibang mga paraan ng paghawak ng isang error sa VBA. Habang sinusulat ang code na maaaring hindi mo asahan ang uri ng error code na maaaring magtapon ngunit kung may anumang error na darating mas gugugol ka ng mas maraming oras sa pag-debug kaysa sa pagsulat mismo ng code.

Ano ang isang Error?

Ang isang error ay walang anuman ngunit ang isang linya ng code ay hindi maipatupad dahil sa pagpapaandar o maling code. Kaya subukang asahan ang error at hawakan ito.

Halimbawa, kung susubukan mong tanggalin ang sheet na wala doon kung gayon malinaw na hindi namin maisasagawa ang linya ng code.

Ang isang error ay sa tatlong uri ng isa ay naipon ng error dahil sa hindi naihayag na mga variable. Ang pangalawa ay isang error sa pagpasok ng data dahil sa maling mga entry ng coder, at ang pangatlo ay run time error dahil sa VBA ay hindi makilala ang linya ng code. Para sa pagsubok na i-access o magtrabaho sa worksheet o workbook na wala doon.

Ngunit mayroon kaming pahayag sa VBA upang hawakan ang lahat ng mga ganitong uri ng mga pagkakamali ibig sabihin ay "On Error" na pahayag.

Mga uri ng On Error Statement

Ang pangunahing punto ng paghawak ng mga error sa VBA ay ang pahayag na "On Error". Halimbawa Sa Error "ipagpatuloy ang susunod na linya", "pumunta sa o tumalon sa ibang linya", atbp…

Sa Error na pahayag ay mayroong tatlong uri ng mga pahayag dito.

  1. GoTo 0nangangahulugang tuwing nangyayari ang error sa run time excel o dapat ipakita ng VBA ang kahon ng mensahe ng error na sinasabi ang uri ng error na naranasan nito. Sa sandaling ipatupad ng VBA ang code ay hindi pinagana nito ang lahat ng mga handler ng error sa partikular na pag-block sa code.
  2. Ipagpatuloy ang Susunod nangangahulugang tuwing nagaganap ang pagkakamali ang tagubiling ito ay nagtuturo sa excel na huwag pansinin ang error na iyon at magpatuloy sa (ipagpatuloy ang susunod) sa susunod na linya ng code nang hindi ipinapakita ang anumang mga mensahe ng error. Hindi ito nangangahulugang aayusin nito ang error sa halip ay binabalewala lamang nito ang error.
  3. GoTo [label] nangangahulugang tuwing nakakasalubong ang VBA ng isang error pumunta sa itinalagang label. Ginagawa nitong ang code upang tumalon sa tukoy na linya na ibinigay ng coder.

Nangungunang 3 Mga Paraan upang Pangasiwaan ang Mga Error sa VBA

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

# 1 - Sa Ipagpatuloy ang Error sa Susunod

Ipagpalagay na hinahati mo ang halaga ng 20 ng 0 at idineklara mo ang variable upang maitalaga ang resulta ng paghahati dito.

Code:

 Sub OnError_Example1 () Dim i As Integer i = 20/0 End Sub 

Kung patakbuhin mo ang code na ito itatapon ang error sa ibaba.

Kaya't hindi mo maaaring hatiin ang anumang numero sa pamamagitan ng zero na halaga. Ang numero ng error sa run time ay 11 ibig sabihin Division by Zero.

Ngayon ay magdagdag ako ng isa pang linya sa code.

Code:

 Sub OnError_Example1 () Dim i Bilang Integer, j Bilang Integer i = 20/0 j = 20/2 End Sub 

Ngayon ay idaragdag ko ang pahayag Sa error ipagpatuloy ang susunod sa tuktok.

Code:

 Sub OnError_Example1 () Dim i Bilang Integer, j Bilang Integer Sa Error Resume Susunod i = 20/0 j = 20/2 End Sub 

Ngayon kung isasagawa ko ang code na ito hindi ito bibigyan ng anumang mga mensahe ng error sa halip ay isasagawa nito ang susunod na linya ng code ibig sabihin j = 20/2.

# 2 - Sa Error GoTo Label

Nagdeklara ako ng tatlong mga variable.

Code:

 Sub OnError_Example1 () Dim i Bilang Integer, j Bilang Integer, k Bilang Integer 

Para sa lahat ng tatlong variable na ito ay magtatalaga ako ng pagkalkula ng paghahati.

Code:

 Sub OnError_Example1 () Dim i Bilang Integer, j Bilang Integer, k Bilang Integer i = 20/0 j = 20/2 k = 10/5

Ang resulta ng lahat ng tatlong mga kalkulasyon ay ipapakita sa kahon ng mensahe.

Code:

 Sub OnError_Example1 () Dim i Bilang Integer, j Bilang Integer, k Bilang Integer i = 20/0 j = 20/2 k = 10/5 MsgBox "Ang halaga ng i ay" & i & vbNewLine & "Ang halaga ng j ay "& j & _ vbNewLine &" Ang halaga ng k ay "& k & vbNewLine End Sub 

Ngayon ay susubukan kong ipatupad ang code na ito dahil ang pagkalkula ng "I" ay hindi tamang makakakuha kami ng run time error 11.

Ngayon ay idaragdag ko ang pahayag na "On Error Resume Next".

Code:

 Sub OnError_Example1 () Dim i Bilang Integer, j Bilang Integer, k Bilang Integer On Error Resume Susunod i = 20/0 j = 20/2 k = 10/5 MsgBox "Ang halaga ng i ay" & i & vbNewLine & "The ang halaga ng j ay "& j & _ vbNewLine &" Ang halaga ng k ay "& k & vbNewLine End Sub 

Kung naisasagawa ko ito ay lalaktawan ang pagkalkula ng "I" at isagawa ang natitirang dalawang kalkulasyon at ang resulta ay ang mga sumusunod.

Ngayon sa halip na "Sa Susunod na Ipagpatuloy ang Error" idaragdag ko ang "Sa Error GoTo KCalculation"

Code:

 Sub OnError_Example1 () Dim i Bilang Integer, j Bilang Integer, k Bilang Integer Sa Error GoTo KCalculation: i = 20/0 j = 20/2 KKakalkula: k = 10/5 MsgBox "Ang halaga ng i ay" & i & vbNewLine & "Ang halaga ng j ay" & j & _ vbNewLine & "Ang halaga ng k ay" & k & vbNewLine End Sub 

Tandaan: Narito ang "KCalculation" ang pangalan ng label na ibinigay ko, maaari mong ibigay ang iyong sariling pangalan ng label nang walang anumang puwang.

Ngayon kung isasagawa ko ang linya ng code na ito hindi ito tatalon sa susunod na linya sa halip ay tatalon ito sa pangalan ng label na ipinasok ko ibig sabihin ay "KCalcualtion". Dito ay hindi papansinin ang error na ibinigay ng "I" at hindi rin ito magsasagawa ng pagkalkula ng "j" ngunit kaagad na tumalon ito sa "KCalcualtion".

# 3 - I-print ang Numero ng Error sa VBA

Sa pagtatapos ng code, maaari din nating mai-print ang numero ng error sa isang hiwalay na kahon ng mensahe. Gagawa sa trabahong ito ang sumusunod na linya ng code.

Code:

Err.Bilang

Ngayon tatakbo ko ang code na ito unang kahon ng mensahe ay magpapakita ng mga resulta sa pagkalkula.

Mag-click sa OK, magpapakita ito ng isa pang kahon ng mensahe upang maipakita ang numero ng error.

Pumunta kami sa 11 bilang resulta ibig sabihin, Division by Zero.

Maaari rin nating makuha ang paglalarawan ng error sa halip na ang numero. Kailangan lang naming baguhin ang code, sa ibaba ay ang code.

Code:

Err.Paglalarawan

Ipapakita nito ang isang paglalarawan na tulad nito.

Bagay na dapat alalahanin

  • Matapos ipasok ang "On Error Resume Next" sa dulo ng code huwag kalimutang idagdag ang pahayag na "Sa Error GoTo 0"
  • Ang pangalan ng label ay dapat na pareho sa parehong mga lugar.
  • Ang mga pangalan ng tatak ay hindi kailangang tukuyin nang maaga.
  • Sa huli, laging tingnan kung ano ang naganap na error sa pamamagitan ng magkakahiwalay na kahon ng mensahe.