Hvordan kan du identifisere og håndtere alle mulige feil i Excel 2016? Ofte kan du ikke. Heldigvis gir VBA en annen måte å håndtere de irriterende feilene på.
Gå tilbake til EnterSquareRoot-prosedyren
Undersøk følgende kode. Rutinen bruker en all-purpose On Error-setning for å fange alle feil og deretter sjekke for å se om InputBox ble kansellert.
Sub EnterSquareRoot5()
Dim nummer som variant
Dim melding som streng
' Sett opp feilhåndtering
Ved feil GoTo BadEntry
' Spør om en verdi
Num = InputBox(“Skriv inn en verdi”)
' Avslutt hvis du kansellerer
Hvis Num = ““ Avslutt Sub
' Sett inn kvadratroten
ActiveCell.Value = Sqr(tall)
Avslutt Sub
BadEntry:
Msg = "Det oppsto en feil." & vbNewLine & vbNewLine
Msg = Msg & "Sørg for at et område er valgt,"
Msg = Msg & "arket er ikke beskyttet",
Msg = Msg & "og du angir en ikke-negativ verdi."
MsgBox Msg, vbCritical
End Sub
Denne rutinen fanger opp alle typer kjøretidsfeil. Etter å ha fanget en kjøretidsfeil, viser den reviderte EnterSquareRoot-prosedyren denne meldingsboksen. Denne meldingsboksen beskriver de mest sannsynlige årsakene til feilen.
En kjøretidsfeil i prosedyren genererer denne semi-nyttige feilmeldingen.
På Feil fungerer ikke?
Hvis en On Error-setning ikke fungerer som annonsert, må du endre en av innstillingene dine:
Aktiver VBE.
Velg kommandoen Verktøy → Alternativer.
Klikk kategorien Generelt i dialogboksen Alternativer.
Sørg for at innstillingen Break on All Errors er deaktivert.
Hvis denne innstillingen er valgt, ignorerer Excel i hovedsak eventuelle On Error-setninger. Du vil vanligvis beholde alternativene for feilfelling satt til Break on Unhandled Errors.
Om On Error-erklæringen
Ved å bruke en On Error-setning i VBA-koden kan du omgå Excels innebygde feilhåndtering og bruke din egen feilhåndteringskode. I forrige eksempel fører en kjøretidsfeil til at makrokjøring hopper til setningen merket BadEntry. Som et resultat unngår du Excels uvennlige feilmeldinger, og du kan vise din egen melding til brukeren.
Legg merke til at eksemplet bruker en Exit Sub-setning rett før BadEntry-etiketten. Denne setningen er nødvendig fordi du ikke ønsker å utføre feilhåndteringskoden hvis det ikke oppstår en feil .