Hvordan kan du identificere og håndtere enhver mulig fejl i Excel 2016? Ofte kan man ikke. Heldigvis giver VBA en anden måde at håndtere disse irriterende fejl på.
Genbesøg EnterSquareRoot-proceduren
Undersøg følgende kode. Rutinen bruger en On Error-sætning til alle formål til at fange alle fejl og derefter kontrollere, om InputBox blev annulleret.
Sub EnterSquareRoot5()
Dim nummer som variant
Dæmp besked som streng
' Konfigurer fejlhåndtering
Ved fejl GoTo BadEntry
' Bed om en værdi
Num = InputBox(“Indtast en værdi”)
' Afslut hvis aflyst
Hvis Num = ““ Afslut Sub
' Indsæt kvadratroden
ActiveCell.Value = Sqr(Num)
Afslut Sub
BadEntry:
Msg = "Der opstod en fejl." & vbNewLine & vbNewLine
Msg = Msg & "Sørg for, at et område er valgt, "
Msg = Msg & "arket er ikke beskyttet",
Msg = Msg & "og du indtaster en ikke-negativ værdi."
MsgBox Msg, vbCritical
Slut Sub
Denne rutine fanger enhver form for runtime-fejl. Efter at have fanget en runtime-fejl, viser den reviderede EnterSquareRoot-procedure denne meddelelsesboks. Denne meddelelsesboks beskriver de mest sandsynlige årsager til fejlen.
En runtime fejl i proceduren genererer denne semi-hjælpsomme fejlmeddelelse.
På Fejl virker ikke?
Hvis en On Error-erklæring ikke fungerer som annonceret, skal du ændre en af dine indstillinger:
Aktiver VBE.
Vælg kommandoen Værktøjer → Indstillinger.
Klik på fanen Generelt i dialogboksen Indstillinger.
Sørg for, at indstillingen Break on All Errors er fravalgt.
Hvis denne indstilling er valgt, ignorerer Excel i det væsentlige eventuelle Ved fejl-sætninger. Du vil normalt beholde indstillingerne for fejlindfangning indstillet til Break on Unhandled Errors.
Om fejlerklæringen
Ved at bruge en On Error-sætning i din VBA-kode kan du omgå Excels indbyggede fejlhåndtering og bruge din egen fejlhåndteringskode. I det forrige eksempel forårsager en runtime-fejl, at makroudførelse springer til sætningen mærket BadEntry. Som et resultat undgår du Excels uvenlige fejlmeddelelser, og du kan vise din egen besked til brugeren.
Bemærk, at eksemplet bruger en Exit Sub-sætning lige før BadEntry-etiketten. Denne erklæring er nødvendig, fordi du ikke ønsker at udføre fejlhåndteringskoden, hvis der ikke opstår en fejl .