VBA On Error GoTo | VBA väljavõtete tüübid

Exceli VBA On GoTo tõrge

Vead on lahutamatu osa kodeerimiskeelest ja VBA makrod ei erine sellest. Minu arvates on vea ilmnemise põhjus 90% tehtud tööst ja 10% selles, kuidas seda viga parandada. Igas kodeerimiskeeles kasutavad kooderid vigade käsitlemisel oma viisi, nii et ka meie kasutame seda VBA kodeerimisel. Sageli peame viga ignoreerima või sageli, kui vea ilmnemisel tahame minna konkreetsete asjadega. „On Error” on lause, mida peame VBA-s kasutama vigade käsitlemiseks.

Sellel avaldusel on kolme tüüpi avaldusi ja allpool on loetelu.

  1. On tõrge Goto 0
  2. Viga Goto [silt]
  3. On Error Jätka järgmist

Selles artiklis näeme, kuidas neid kolme lauset kasutatakse VBA kodeerimisel igasuguste vigade käsitlemiseks.

Kuidas VBA-d veateadetes kasutada?

Selle VBA On Error GoTo avalduse malli saate alla laadida siit - VBA On Error GoTo avalduse mall

# 1 - sisse lülitatud viga Jätka järgmist

Kuna lause ise ütleb: „On Error Resume Next” tähendab alati, kui viga ilmneb koodis, jätkake koodi järgmist rida, ignoreerides vea rea ​​koodi. Nüüd heitke pilk allpool olevale koodile.

Allpool olevas koodis mainisin töölehe nimesid ja palusin sisestada esimesse lahtrisse väärtuseks “Error Testing”.

Kood:

 Sub On_Error_Resume_Next () töölehed ("Ws 1"). Valige vahemik ("A1"). Väärtus = "Error Testing" töölehed ("Ws 2"). Valige Range ("A1"). Value = "Error Testing" töölehed ( "Ws 3"). Valige vahemik ("A1"). Väärtus = "Error Testing" töölehed ("Ws 4"). Valige Range ("A1"). Value = "Error Testing" End Sub 

Nüüd on mul töövihikus allpool töölehed.

  • Käitan koodi ja vaatan, mis juhtub.

  • Saime tõrke „Subscripti vahemikust väljas”, klõpsake valikul „Silumine”, et näha, millisel real me vea leidsime.

  • Nii et real "Töölehed (" Ws 3 "). Valige" meil tekkis viga, see on sellepärast, et meie töövihikus pole ühtegi töölehte nimega "Ws 3", nii et ilmnes tõrge.

Sellistel juhtudel võime soovida viga ignoreerida ja jätkata koodi täitmist järgmisele reale. Siit tuleb pilti meie tõrkeotsing „On Error Resume Next”.

  • Kõik, mida peame tegema, on lisada makro algusesse rida „On Error Resume Next”.

Nüüd käivitage see kood ja see ei näita ühtegi tõrketeadet, sest alati, kui kood ilmneb veaga, ignoreerib see viga ja jätkab järgmise koodirea kasutamist.

# 2 - GoTo 0 tõrke korral

See pole veakäitleja, pigem veateate lubaja pärast seda, kui tõrketeate keelatakse, kasutades lauset „On Error Resume Next”

Üks, mida kasutate lause „Jätka järgmist”, kasutab VBA makrosid igasugust viga, mida see võib juhtuda, ja jätkab järgmise koodireaga. Kuid me ei taha, et see kogu aeg juhtuks, sest mõned vead, mida peame tahtlikult eirama, vajame teatist.

Kui mõni konkreetne koodikomplekt viskab sellesse koodiplokki vea, peame ignoreerima viga muud koodi osad, mida me ei soovi viga ignoreerida.

  • Vaadake allolevalt pildilt avalduse „On Error GoTo 0” kasutamist.

Nüüd ignoreeritakse vigu seni, kuni kood leiab veateate lubaja „On Error GoTo 0”. Kui see koodirida käivitab makrod normaalseks ja hakkab veateateid viskama nagu tavaliselt.

# 3 - GoTo sildi viga

Oleme näinud, kuidas viga ignoreerida ja kuidas veateate tagasi lubada. Nüüd saame seda meetodit kasutades minna konkreetsele koodireale.

Selles meetodis tähendab „silt”, et saame sellele sildile anda mis tahes nime ja sama silt tuleks anda ka vajalikul koodireal.

Näiteks vaadake sama koodi ülaltoodud näites.

Nüüd käivitame koodi rea kaupa, vajutades funktsiooniklahvi F8.

Nüüd loeb makro veakäitleja avalduse, vajutage klahvi F8, et täita kaks esimest töölehe koodi.

Nüüd on makro käivitamas kolmandat töölehe koodi, mida pole töövihikus, vajutage klahvi F8 ja vaadake, mis juhtub.

Kuna makrol ilmnes viga allpool koodireas, hüppas see tõrkeotsingu sildile „ErrorMessage”, mida kirjeldati lause „On Error GoTo [Label]” kaudu.

Nüüd kuvatakse sõnumikastis teade „Ilmnes tõrge ja makrost väljumine”.

Asjad, mida meeles pidada

  • VBA On Error GoTo 0 lubab veateate veel kord, nii et ärge unustage seda pärast tõrkeotsingu lisamist lisada.
  • Peate olema täiesti kindel, millises koodi osas soovite viga ignoreerida, nii et lisage veakäitleja ainult selle koodiploki jaoks.