Villumeðferðaraðilar leyfa þér að tilgreina hvað gerist þegar villa kemur upp á meðan Excel makrókóði þinn keyrir. Villumeðferðaraðilar eru línur svipaðar eftirfarandi:
Við Villa GoTo MyError
Án villumeðferðaraðila munu allar villur sem eiga sér stað í kóðanum þínum hvetja Excel til að virkja minna en gagnleg villuboð sem venjulega munu ekki segja skýrt frá því sem gerðist. Hins vegar, með aðstoð villumeðferðaraðila, geturðu valið að hunsa villuna eða loka kóðanum með þokkabót með eigin skilaboðum til notandans.
Það eru þrjár gerðir af On Error staðhæfingum:
-
Við Villa GoTo SomeLabel: Kóðinn hoppar á tilgreint merki.
-
Á Villa Resume Next: Villan er hunsuð og kóðinn heldur áfram.
-
Á Villa GoTo 0: VBA endurstillir sig í eðlilega villuskoðunarhegðun .
Við Villa GoTo SomeLabel
Stundum þýðir villa í kóðanum þínum að þú þarft að hætta ferlinu með þokka og gefa notendum þínum skýr skilaboð. Í þessum aðstæðum geturðu notað On Error GoTo yfirlýsinguna til að segja Excel að hoppa í ákveðna línu af kóða.
Til dæmis, í eftirfarandi litla kóða, segir þú Excel að deila gildinu í reit A1 með gildinu í reit A2 og setur síðan svarið í reit A3. Auðvelt. Hvað gæti farið úrskeiðis?
Sub Macro1()
Range("A3").Value = Range("A1").Value / Range("A2").Value
End Sub
Eins og það kemur í ljós getur tvennt stórt farið úrskeiðis. Ef reit A2 inniheldur 0 færðu deilingu með 0 villu. Ef reit A2 inniheldur ótalnagildi færðu villu í tegund misræmis.
Til að forðast viðbjóðsleg villuskilaboð geturðu sagt Excel að við villu viltu að keyrsla kóðans hoppa á merkið sem heitir MyExit.
Í eftirfarandi kóða er MyExit merkinu fylgt eftir með skilaboðum til notandans sem gefur vinsamleg ráð í stað ógeðslegra villuboða. Athugaðu einnig Exit Sub línuna á undan MyExit merkimiðanum, sem tryggir að kóðinn hættir einfaldlega ef engin villa kemur upp:
Sub Macro1()
Við Villa í GoTo MyExit
Range("A3").Value = Range("A1").Value / Range("A2").Value
Hætta undir
MyExit:
MsgBox "Vinsamlegast notaðu gild númer sem ekki eru núll"
End Sub
Á Villa Resume Next
Stundum vilt þú að Excel hunsi villu og haldi einfaldlega áfram að keyra kóðann. Í þessum aðstæðum geturðu notað yfirlýsinguna Við villuskráningu næst.
Til dæmis, eftirfarandi kóða er ætlað að eyða skrá sem heitir GhostFile.exe úr C:Temp skránni. Eftir að skránni hefur verið eytt, segir fallegur skilaboðakassi notandanum að skráin sé horfin:
Sub Macro1()
Drepa "C:TempGhostFile.exe"
MsgBox "Skrá hefur verið eytt."
End Sub
Kóðinn virkar frábærlega ef það er örugglega skrá til að eyða. En ef af einhverjum ástæðum skráin sem heitir GhostFile.exe er ekki til í C:Temp drifinu, þá er villa hent.
Í þessu tilfelli er þér alveg sama þótt skráin sé ekki þar vegna þess að þú ætlaðir samt að eyða henni. Svo þú getur einfaldlega hunsað villuna og haldið áfram með kóðann.
Með því að nota On Error Resume Next yfirlýsinguna keyrir kóðinn sinn gang hvort sem markskráin er til eða ekki:
Sub Macro1()
Á Villa Resume Next
Drepa "C:TempGhostFile.exe"
MsgBox "Skrá hefur verið eytt."
End Sub
Við Villa GoTo 0
Þegar tilteknar villusetningar eru notaðar gæti verið nauðsynlegt að endurstilla villuskoðunarhegðun VBA. Til að skilja hvað þetta þýðir skaltu skoða næsta dæmi.
Hér viltu fyrst eyða skrá sem heitir GhostFile.exe úr C:Temp skránni. Til að forðast villur sem gætu stafað af því að markskráin er ekki til, notarðu yfirlýsinguna On Error Resume Next. Eftir það reynirðu að gera grunsamlega stærðfræði með því að deila 100/Mike:
Sub Macro1()
Á Villa Resume Next
Drepa "C:TempGhostFile.exe"
Range("A3"). Gildi = 100 / "Mike"
End Sub
Að keyra þennan kóða ætti að búa til villu vegna óljósrar stærðfræði, en það gerir það ekki. Hvers vegna? Vegna þess að síðasta leiðbeiningin sem þú gafst kóðanum var On Error Resume Next. Allar villur sem koma upp eftir þá línu eru í raun hunsaðar.
Til að ráða bót á þessu vandamáli geturðu notað On Error GoTo 0 yfirlýsinguna til að halda áfram eðlilegri villuskoðun:
Sub Macro1()
Á Villa Resume Next
Drepa "C:TempGhostFile.exe"
Við Villa GoTo 0
Range("A3"). Gildi = 100 / "Mike"
End Sub
Þessi kóði mun hunsa villur þar til On Error GoTo 0 yfirlýsingin. Eftir þá yfirlýsingu fer kóðinn aftur í venjulega villuskoðun og kallar fram væntanlega villu sem stafar af loðnu stærðfræðinni.