Excel VBA -virheiden käsittely

Virheiden käsittely on erittäin hyödyllinen ja merkittävä mekanismi VBA: n kaltaisten kielten ohjelmointiin. Virheiden hallinta tai estäminen on osa virheiden käsittelyä, joka tarkoittaa tehokkaiden ja merkittävien toimenpiteiden toteuttamista VBA-komentosarjan sisällä virheiden esiintymisen välttämiseksi.

Erityyppiset virheet VBA: ssa

  1. Syntaksivirhe tai jäsennysvirhe
  2. Kokoonpano- tai käännösvirhe
  3. Suorituksenaikainen virhe
  4. Looginen virhe

Yllä olevat virheet voidaan korjata alla mainittujen virheiden ja koodin väliin lisättyjen 'On Error' -ilmoitusten avulla.

On Error Jatka seuraavaksi

Virheessä Goto 0

Virheessä Goto

Virheessä Goto -1

VBA-virheiden käsittely eri 'ON ERROR' -lausekkeiden avulla

Voit ladata tämän VBA-virheenkäsittelyohjelman Excel-mallin täältä - VBA-virheenkäsittelyohjelman Excel-mallin

Esimerkki 1 - VBA-käännösvirheet

Kun VBA-koodin lauseessa tai syntaksissa on virhe, kun kirjoitat koodin väärin vahingossa, se korostetaan punaisella värillä työkalujen asetusvaihtoehtojen mukaan (Jos olet valinnut automaattisen syntaksin tarkistuksen).

Kääntämisvirheen ponnahdusikkuna tulee näkyviin, kun suoritat koodin väärillä syntaksilla.

Koodi:

 Sub SYNTAX_ERROR () MsgBox tämä on minun ensimmäinen ohjelma End Sub 

”COMPILE ERROR: VARIABLE EI MÄÄRITTELY” on yleisin virhe, joka näkyy ponnahdusviestinä. kun viittausmuuttujaa ei ole määritelty, tämä virhe ilmenee.

Koodi:

 Sub VBA_FORMAT1 () A = 19049.83 A = Muoto (A, "STANDARD") MsgBox A End Sub 

Yllä olevassa esimerkissä en ole ilmoittanut muuttujatyyppiä merkkijonona, joten tämä virhe ilmenee. Joten minun täytyy julistaa muuttuja Dim A: lla merkkijonona.

Koodi:

 Sub VBA_FORMAT1 () himmennetty A merkkijonona A = 19049.83 A = muoto (A, "STANDARD") MsgBox A loppu Sub 

Esimerkki 2 - VBA-ajonaikainen virhe

Kun lauseessa esiintyy mahdotonta matemaattisia lauseita tai termejä, tapahtuu tämä ajonaikainen virhe.

Koodi:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Esimerkki 3 - VBA-loogiset virheet tai virheet

Näitä virheitä on erittäin vaikea seurata. Kumpikaan ei tule esiin eikä pop-up -virhesanoma tule näkyviin. se johtaa odottamattomiin toimiin ja virheellisiin tuloksiin.

Esimerkki: Kun koodissa on kaksi muuttujaa, se voi sisältää väärän. Tässä tapauksessa tapahtuu looginen virhe.

Kuinka estää virheitä VBA: ssa?

Katsotaanpa kuinka edellä mainittujen erityyppisten virheiden estäminen VBA Excelissä.

Vaihe 1: VB Editor -ikkunan avaaminen Valitse tai napsauta Visual Basic Koodiryhmä Kehittäjä- välilehdellä tai voit napsauttaa suoraan Alt + F11 -pikanäppäintä.

Vaihe 2: Voit luoda tyhjän moduulin Microsoft excel -objektien alla napsauttamalla hiiren kakkospainikkeella arkkia 1 (VB_ERROR HANDLING) & Lisää moduuli, jotta uusi tyhjä moduuli luodaan.

VBA-virheiden käsittely virheenkorjausvaihtoehdolla

On parempi kääntää koodi ennen kuin ajamme sitä. Kokoonpanon seuraamiseksi on noudatettava seuraavia vaiheita. VB-valikkotyökalurivin Debug-vaihtoehdon alla on valittava käännettävä VBA-projekti. Kun napsautat sitä, se tarkistaa koodin askel askeleelta, kun se on löytänyt virheen, se korostaa sen ja ponnahdusviesti tulee näkyviin, joten sinun on korjattava se. Kun se on korjattu, sinun on käännettävä löytääksesi seuraava virhe koodista.

Huomaa: Käännä-vaihtoehdon avulla voimme korjata vain käännös- ja syntaksivirheen.

VBA-virheiden käsittely eri 'ON ERROR' -lausekkeiden avulla

1. On Error Jatka seuraavaksi

Tässä virhe jätetään huomioimatta ja koodi siirtyy eteenpäin.

Alla mainitussa esimerkissä 6: ta ei voi jakaa nollalla, jos suoritat sen syöttämättä On Error Resume Next -käskyä, tapahtuu alla mainittu ajonaikainen virhe.

Koodi:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Jos On Error Resume Next lisätään koodin yläosaan alalausekkeen jälkeen, se ohittaa ajonaikaisen virheen ja siirtyy seuraavaan lauseeseen, mikä johtaa tulokseen 6/2 eli 3 (ponnahdusikkuna sen tuloksella).

Koodi:

 Sub RUNTIME_2 () Virheessä Jatka Seuraava MsgBox 6/0 MsgBox 6/2 End Sub 

2. On Error GoTo 0 ja Error GoTo -1

'On Error GoTo 0' lopettaa koodin virheen aiheuttavalla tietyllä rivillä ja näyttää viestin, joka kuvaa tai ilmaisee virheen.

Koodi:

 Sub onError_Go_to_0 () On Error GoTo 0 Tapa "C: TempFile.exe" -alue ("A1"). Arvo = 100 / "PETER" End Sub 

Yleensä se näyttää oletusvirheentarkistuskäyttäytymisen, se on merkittävä, kun sitä käytetään yhdessä virheen jatkamisen seuraavan kanssa.

Yleensä voit tarkkailla Runtime Error Message -ruutua, joka sisältää 'Jatka', 'Lopeta', 'Debug' ja 'Ohje' -vaihtoehdot. tarkistetaan kunkin käyttötavat.

  • Jatka- vaihtoehto ohittaa poikkeuksen ja jatkaa koodia, jos se on mahdollista.
  • Loppuvaihtoehto lopettaa ohjelman.
  • Debug- vaihtoehto korostaa lauseen, jossa virhe on tapahtunut. joka auttaa sinua korjaamaan koodin tai korjaamaan sen.
  • Ohjevaihtoehto avaa Microsoft MSDN -ohjeen sivun.

On Error GoTo 0 kanssa On Error Resume Next

Koodi:

 Sub onError_Go_to_0_with_Resume_next () On Error Resume Next Tapa "C: TempFile.exe" On Error GoTo 0 Range ("A1"). Value = 100 / "PETER" End Sub 

Yllä olevassa koodissa se ohittaa virheet, kunnes se saavuttaa On Error GoTo 0 -käskyn. On On Go Goo 0 -käskyn jälkeen koodi palaa takaisin tai siirry normaaliin virheen tarkistukseen ja laukaisee odotettavissa olevan virheen. Kun suoritan yllä olevan koodin, se näyttää jakovirheen, ts. tyypin yhteensopimattomuuden (numeerista arvoa ei voida jakaa tekstillä).

On Error GoTo 0 poistaa käytöstä kaikki VBA-koodissa tällä hetkellä olevat virhesanomat, ts. Sammuttaa pääkoodin virheiden käsittely, kun taas On Error GoTo -1 tyhjentää virheiden käsittelyn ja asettaa sen mihinkään, mikä auttaa tai sallii sinun luoda uuden virheloukun.

3. Virhe GoTo <LABEL

VBA siirtääksesi ohjelman ohjauksen riville, jota tarra seuraa, jos havaitaan ajonaikaisia ​​virheitä, ts. Koodi hyppää määritettyyn tunnisteeseen. Tässä poikkeusrivin ja tarran välisiä koodilausekkeita ei suoriteta.

Tämä menetelmä on sopivampi ja merkittävämpi poistumaan ohjelmasta sulavasti, jos suorituksen aikana tapahtuu jokin merkittävä kohtalokas virhe.

Jäljempänä mainitussa VBA-koodissa heti, kun virhe ilmenee rivillä 3, ohjelma siirtää ohjauksen Rivin 6 eli tarraan (ponnahdusikkuna ilmestyy ”Poikkeuskäsittelijäksi” ).

Koodi:

 Sub OnError_Go_to_Label () On Error GoTo Error_handler: MsgBox 9/0 MsgBox "Tätä riviä ei suoriteta." Exit Sub Error_handler: MsgBox "poikkeuskäsittelijä" End Sub 

Täällä voit huomata, että 'Poistu ala -sovelluksesta' tulisi käyttää juuri ennen 'Virhe_käsittelijä:' -tarraa, tämä tehdään sen varmistamiseksi, että Virhekäsittelijän koodilohko pysähtyy tai ei toimi, jos virhettä ei ole. Nyt voit tallentaa työkirjan "Excel-makro-käytössä työkirjana". Napsauta Tallenna kuten taulukon vasemmassa kulmassa.

Kun avaat tiedoston uudelleen, voit napsauttaa pikanäppäintä eli Fn + Alt + f8, näyttöön tulee “Makro” -valintaikkuna, jossa voit suorittaa valitsemasi tallennetun makrokoodin tai napsauttaa Fn + Alt + F11 täysi makro-ikkuna.

Muistettavat asiat

  • Ennen kuin kirjoitat koodia, sinun on varmistettava, että käsittelemättömien virheiden katkeaminen on valittu tai valittu virheellisesti. ansastusvaihtoehto yleisesti VBA-työkalurivin työkalun vaihtoehdoissa.
  • Se on oletusasetus, joka auttaa estämään koodisi virheistä, joita ei käsitellä.
  • Katkaise kaikki virheet: Se pysäyttää koodisi kaikentyyppisissä virheissä.
  • Break-in-luokan moduuli: Jos koodissa käytetään jotakin esinettä, kuten käyttäjän lomaketta, se korostaa tarkan virheen aiheuttavan rivin.

Suositellut artikkelit

Tämä on opas VBA-virheiden käsittelyyn. Tässä keskustellaan siitä, kuinka VBA-virheidenkäsittelyä voidaan käyttää Excelissä, sekä joitain käytännöllisiä esimerkkejä ja ladattavaa Excel-mallia. Voit myös käydä läpi muiden ehdottamiemme artikkeleidemme -

  1. VBA: n ilmoitusjoukko (esimerkit)
  2. VBA virheessä
  3. VBA-suojausarkki
  4. VBA-sarakkeet | Excel-mallit
  5. VBA Environ

Luokka: