Hvordan håndtere feil i Excel 2016 VBA

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.

  • Klikk på kategorien Generelt i dialogboksen Alternativer.
  • Kontroller at Break på alle feil innstilling ikke er valgt.
    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å.