Hvordan kan du identifisere og håndtere alle mulige feil i Excel 2 016? Ofte kan du ikke. Heldigvis gir VBA en annen måte å forholde seg til de viltre feil.
Revisiting EnterSquareRoot prosedyren
Undersøk følgende kode. Rutinen benytter en allsidig On Error uttalelse til felle alle feil og deretter sjekke for å se om InputBox ble kansellert.
Sub EnterSquareRoot5 () Dim Num As Variant Dim mld As String 'Sett opp feilhåndtering On Error GoTo BadEntry' Spør etter en verdi Num = InputBox ("Skriv inn en verdi") 'Avslutt ved avbestilling Hvis Num = "" Then Exit Sub' Sett kvadratroten ActiveCell.Value = Sqr (Num) Exit SubBadEntry: Msg = ". Det oppstod en feil" & vbNewLine & vbNewLine Msg = Bes & "Pass på at et utvalg er valgt," Msg = Bes & "Arket ikke er beskyttet," Msg = Bes & "Og du angir et positivt verdi." MsgBox Msg, vbCriticalEnd Sub
Denne rutinen feller noen
type runtime error. Etter fangst en runtime error, viser reviderte EnterSquareRoot prosedyren denne meldingsboksen. Denne meldingsboks beskriver de mest sannsynlige årsakene til feilen., En kjøretidsfeil i prosedyren genererer dette semihelpful feilmelding.
On Error ikke fungerer?
Hvis en On Error uttalelse fungerer ikke som annonsert, må du endre en av innstillingene:
Aktiver VBE
Velg Verktøy og rarr;. Valg kommando.
Hvis denne innstillingen er valgt, Excel hovedsak ignorerer noen om feil uttalelser. Du normalt vil beholde Error Fangst vil valg å bryte på Ubehandlede feil.
Om On Error uttalelse
Ved hjelp av en On Error uttalelse i VBA-kode kan du bypass Excel innebygde feilhåndtering og bruke din egen feilhåndtering kode. I forrige eksempel, fører til en runtime error makro utførelse å hoppe til uttalelsen merket BadEntry. Som et resultat, unngår du Excel uvennlige feilmeldinger, og du kan vise din egen melding til brukeren.
Merke til at eksemplet bruker en Exit Sub uttalelse rett før BadEntry etiketten. Denne uttalelsen er nødvendig fordi du ikke ønsker å kjøre feilhåndtering kode hvis en feil gjør ikke
oppstå.