OnError avalduse kasutamine Excel 2016 VBA-s

Kui teil on vaja Excel VBA tõrkeid lahendada, saate kasutada avaldust OnError. Siiski on mõned asjad, mida peate kõigepealt teadma. Saate kasutada avaldust On Error kolmel viisil.

Süntaks Mida see teeb
On Error GoTo silt Pärast selle avalduse täitmist jätkab VBA täitmist
määratud sildile järgnevas lauses. Peate lisama
sildi järele kooloni , et VBA tunneks selle sildina ära.
Viga GoTo 0 korral Pärast selle avalduse täitmist jätkab VBA tavalist
veakontrolli käitumist. Kasutage seda avaldust pärast mõne
muu tõrkeavalduse kasutamist või kui soovite
oma protseduurist veakäsitluse eemaldada .
Vea korral Jätka järgmisena Pärast selle avalduse
täitmist ignoreerib VBA lihtsalt kõiki vigu ja jätkab täitmist järgmise lausega.

Jätkatakse pärast viga

Mõnel juhul soovite lihtsalt, et rutiin lõppeks vea ilmnemisel kaunilt. Näiteks võite kuvada tõrget kirjeldava teate ja seejärel protseduurist väljuda. (Varem näidatud EnterSquareRoot5 näide kasutab seda tehnikat.) Muudel juhtudel soovite võimalusel veast taastuda.

Veast taastumiseks peate kasutama Resume avaldust. See kustutab tõrkeseisundi ja võimaldab täitmist mõnes kohas jätkata. Resume avaldust saate kasutada kolmel viisil.

Süntaks Mida see teeb
Jätka Täitmine jätkub vea põhjustanud avaldusega. Kasutage
seda juhul, kui teie veakäsitluskood probleemi lahendab ja võite
jätkata.
Jätka järgmisena Täitmine jätkub kohe pärast
vea põhjustanud avaldust. See sisuliselt ignoreerib
viga.
Jätkamise silt Täitmine jätkub teie määratud sildi juures .

Järgmises näites kasutatakse pärast tõrke ilmnemist jätkulause:

Sub EnterSquareRoot6()
  Dim Num Variandina
  Hämarda sõnum stringina
  Dim Ans täisarvuna
Proovi uuesti:
' Seadistage veatöötlus
  Viga GoTo BadEntry
' Küsi väärtust
  Num = Inputbox ("Sisesta väärtus")
  Kui Num = "" Seejärel välju Sub
' Sisestage ruutjuur
  ActiveCell.Value = ruut(arv)
  Välju Sub
BadEntry:
  Msg = Err.Number & ": " & Error(Err.Number)
  Msg = Msg & vbNewLine & vbNewLine
  Msg = Sõnum & "Veenduge, et vahemik on valitud, "
  Msg = sõnum & "leht pole kaitstud",
  Msg = Msg & "ja sisestate mittenegatiivse väärtuse."
  Msg = Sõnum & vbNewLine & vbNewLine & "Kas proovite uuesti?"
  Ans = MsgBox (SMS, vbYesNo + vbCritical)
  Kui Ans = vbYes, siis jätkake TryAgain
Lõpeta alam

Sellel protseduuril on veel üks silt: TryAgain. Kui ilmneb tõrge, jätkub täitmine BadEntry sildi juures ja kood kuvab alloleva teate. Kui kasutaja vastab nupul Jah, käivitub avaldus Jätka ja täitmine hüppab tagasi sildile TryAgain. Kui kasutaja klõpsab nuppu Ei, protseduur lõpeb.

OnError avalduse kasutamine Excel 2016 VBA-s

Kui ilmneb viga, saab kasutaja otsustada, kas proovida uuesti.

Pange tähele, et veateade sisaldab ka vea numbrit koos "ametliku" veakirjeldusega.

Jätkamise avaldus kustutab enne jätkamist veatingimuse. Selle nägemiseks proovige eelmises näites teise kuni viimase lausega asendada järgmine lause:

Kui Ans = vbYes, siis minge ProoviAgain

Kood ei tööta õigesti, kui kasutate jätkamise asemel GoTo. Demonstreerimiseks sisestage negatiivne arv. Saate veateate. Uuesti proovimiseks klõpsake nuppu Jah ja seejärel sisestage teine negatiivne arv. See teine ​​tõrge ei ole lõksus, kuna algset veatingimust ei kustutatud.

Vigade käsitlemine lühidalt

Siin on kiire ja räpane kokkuvõte, et aidata teil kogu seda veakäsitlust alal hoida. Veakäsitluskoodi plokil on järgmised omadused:

  • See algab kohe pärast avalduses On Error määratud silti.

  • Teie makro peaks selleni jõudma ainult vea ilmnemisel. See tähendab, et peate vahetult enne silti kasutama avaldust, nagu Exit Sub või Exit Function.

  • See võib nõuda CV avaldust. Kui otsustate tõrke ilmnemisel protseduuri mitte katkestada, peate enne põhikoodi juurde naasmist täitma käsu Jätka.

Teadmine, millal vigu ignoreerida

Mõnel juhul on täiesti okei vigu ignoreerida. Siis tuleb mängu avaldus On Error Resume Next.

Järgmine näide läbib valitud vahemiku iga lahtri ja teisendab väärtuse selle ruutjuureks. See protseduur genereerib veateate, kui valiku mõni lahter sisaldab negatiivset arvu või teksti:

Sub SelectionSqrt()
  Dim cell as Range
  Kui TypeName(Selection) <> “Range”, siis välju Sub
  Iga valitud lahtri jaoks
    lahter.Väärtus = Sqr(lahter.Väärtus)
  Järgmine lahter
Lõpeta alam

Sel juhul võite lihtsalt vahele jätta kõik lahtrid, mis sisaldavad väärtust, mida ei saa ruutjuureks teisendada. Kui-Siis-struktuure kasutades saate luua igasuguseid tõrkekontrollivõimalusi, kuid te võite leida parema (ja lihtsama) lahenduse, lihtsalt ignoreerides tekkivaid vigu.

Selle saavutab järgmine rutiin, kasutades avaldust On Error Resume Next:

Sub SelectionSqrt()
  Dim cell as Range
  Kui TypeName(Selection) <> “Range”, siis välju Sub
  Vea korral Jätka järgmisena
  Iga valitud lahtri jaoks
    lahter.Väärtus = Sqr(lahter.Väärtus)
  Järgmine lahter
Lõpeta alam

Üldiselt võite kasutada avaldust On Error Resume Next, kui arvate, et vead on kahjutud või ei ole teie ülesandega seotud.

Leave a Comment

10 näpunäidet paremateks Microsoft Teamsi koosolekuteks

10 näpunäidet paremateks Microsoft Teamsi koosolekuteks

Uurige kümmet nõuannet Microsoft Teamsiga parema koosolekukogemuse saamiseks, sealhulgas märkmete tegemine, tausta hägustamine, vaigistamine ja koosolekute salvestamine.

Kuidas Word 2013 dokumentides kommentaare üle vaadata ja kustutada

Kuidas Word 2013 dokumentides kommentaare üle vaadata ja kustutada

Lühikeses Word 2013 dokumendis saate kommentaare hõlpsalt sirvida ja uurida. Siit leiate samm-sammult, kuidas kommentaare lugeda ja eemaldada.

Kuidas parandada Word 2016 tavalist malli

Kuidas parandada Word 2016 tavalist malli

Mõnikord varitseb kurjus selles, mis peaks olema Word 2016 peamises mõistlikkuse hoidlas: tavalises mallifailis. Õpi, kuidas taastada normaalne mall ja eemaldada probleemid.

Kuidas lisada lõigu taane Word 2013-s

Kuidas lisada lõigu taane Word 2013-s

Kuidas lisada lõigu taane Word 2013-s, et luua selgem ja professionaalsem ilme. Meie juhend aitab sul lihtsasti navigeerida Wordi funktsioonide kaudu ja tutvustab esimeses reas taande ning rippuva taande lisamise viise.

Kuidas Outlook 2016-s uusi kiireid samme luua

Kuidas Outlook 2016-s uusi kiireid samme luua

Lisaks kuuele kiirtoimingule, mis kuvatakse Outlooki esmakordsel installimisel, on teil valida veelgi rohkemate Quick Step mallide hulgast.

Kustutage oma PowerPointi slaididelt pliiatsi ja esiletõstja joonised

Kustutage oma PowerPointi slaididelt pliiatsi ja esiletõstja joonised

Kui olete esitluse ajal PowerPointi slaididele joonistamiseks kasutanud pliiatsit või markerit, saate joonised järgmise esitluse jaoks salvestada või need kustutada, nii et järgmisel näitamisel alustate puhaste PowerPointi slaididega. Pliiatsi ja markeri jooniste kustutamiseks järgige neid juhiseid: joonte kustutamine […]

Stiili teegi sisu rakenduses SharePoint 2010

Stiili teegi sisu rakenduses SharePoint 2010

Style'i teek sisaldab CSS-faile, XSL-faile ja eelmääratletud mallilehtede, lehepaigutuste ja juhtelementide poolt kasutatavaid pilte rakenduses SharePoint 2010. CSS-failide leidmiseks avaldamissaidi stiiliteegist: valige saidi toimingud → vaade. Kogu saidi sisu. Ilmub saidi sisu. Style raamatukogu asub […]

Vormindage numbreid tuhandetes ja miljonites Exceli aruannetes

Vormindage numbreid tuhandetes ja miljonites Exceli aruannetes

Ärge uputage oma publikut tohutute numbritega. Microsoft Excelis saate parandada oma armatuurlaudade ja aruannete loetavust, vormindades numbrid tuhandetes või miljonites.

Kuidas SharePointi saite jagada ja jälgida

Kuidas SharePointi saite jagada ja jälgida

Siit saate teada, kuidas kasutada SharePointi suhtlusvõrgustiku tööriistu, mis võimaldavad üksikisikutel ja rühmadel suhelda, koostööd teha, jagada ja ühendada.

Kuidas teisendada kuupäevi Excelis Juliani vormingutesse

Kuidas teisendada kuupäevi Excelis Juliani vormingutesse

Julia kuupäevi kasutatakse tootmiskeskkondades sageli ajatemplina ja partiinumbri kiirviitena. Seda tüüpi kuupäevade kodeerimine võimaldab jaemüüjatel, tarbijatel ja teenindusagentidel tuvastada toote valmistamise aja ja seega toote vanuse. Juliuse kuupäevi kasutatakse ka programmeerimises, sõjaväes ja astronoomias. Erinevad […]