Kuinka voit tunnistaa ja käsitellä kaikki mahdolliset virheet Excel 2016:ssa? Usein et voi. Onneksi VBA tarjoaa toisen tavan käsitellä näitä ärsyttäviä virheitä.
Palaa EnterSquareRoot-menettelyyn
Tarkista seuraava koodi. Rutiini käyttää yleistä On Error -lausetta, joka kerää kaikki virheet ja tarkistaa sitten, onko InputBox peruutettu.
Sub EnterSquareRoot5()
Dim Num Varianttina
Himmeä viesti merkkijonona
' Määritä virheenkäsittely
Virheessä GoTo BadEntry
' Pyydä arvoa
Num = InputBox ("Anna arvo")
' Poistu, jos se peruutetaan
Jos Num = "" Poistu Subista
' Lisää neliöjuuri
ActiveCell.Arvo = Sqr(luku)
Poistu Subista
BadEntry:
Msg = "Tapahtui virhe." & vbNewLine & vbNewLine
Msg = Viesti & "Varmista, että alue on valittu",
Msg = Viesti & "arkkia ei ole suojattu",
Msg = Viesti & "ja annat ei-negatiivisen arvon."
MsgBox Msg, vbCritical
Lopeta ala
Tämä rutiini vangitsee kaikenlaiset ajonaikaiset virheet. Ajonaikaisen virheen havaitsemisen jälkeen tarkistettu EnterSquareRoot-menettely näyttää tämän viestiruudun. Tämä viestiruutu kuvaa virheen todennäköisimpiä syitä.
Proseduurin ajonaikainen virhe luo tämän puoliksi hyödyllisen virhesanoman.
Virhe ei toimi?
Jos On Error -ilmoitus ei toimi ilmoitetulla tavalla, sinun on muutettava jotakin asetuksistasi:
Aktivoi VBE.
Valitse Työkalut → Asetukset -komento.
Napsauta Asetukset-valintaikkunan Yleiset-välilehteä.
Varmista, että Break on All Errors -asetuksen valinta on poistettu.
Jos tämä asetus valitaan, Excel jättää huomioimatta kaikki On Error -lausekkeet. Normaalisti haluat pitää Error Trapping -asetukseksi Break on Handled Errors.
Tietoja On Error -ilmoituksesta
On Error -lausekkeen käyttäminen VBA-koodissa antaa sinun ohittaa Excelin sisäänrakennetun virheenkäsittelyn ja käyttää omaa virheenkäsittelykoodiasi. Edellisessä esimerkissä suorituksenaikainen virhe saa makron suorituksen hyppäämään BadEntry-käskyyn. Näin vältyt Excelin epäystävällisiltä virheilmoituksilta ja voit näyttää oman viestisi käyttäjälle.
Huomaa, että esimerkissä käytetään Exit Sub -lausetta juuri ennen BadEntry-tunnistetta. Tämä lausunto on tarpeen, koska et halua suorittaa virheenkäsittelyohjelman koodi, jos virhe ei ole tapahdu.