Feil Håndtak for Excel Macros

feil handlers
lar deg spesifisere hva som skjer når det oppstår en feil mens Excel makro koden kjøres. Feil handlere er linjer som ligner på følgende:
On Error GoTo MyError

Uten feil handlere, vil eventuelle feil som oppstår i koden be Excel for å aktivere en mindre enn nyttig feilmelding som vanligvis ikke vil tydelig formidle hva skjedde. Men med hjelp av feil handlere, kan du velge å ignorere feilen eller avslutte koden grasiøst med din egen melding til brukeren

Det er tre typer av om feil uttalelser.

  • On Error GoTo SomeLabel:
    koden hopper til den angitte etiketten

    On Error Resume Next:..
    feilen blir ignorert og koden fortsetter


    On Error GoTo 0:.
    VBA tilbakestilles til normal feil sjekke atferd

    On Error GoTo SomeLabel

    Noen ganger en feil i koden din betyr at du trenger å grasiøst avslutte prosedyren og gi brukerne et klart budskap. I slike situasjoner kan du bruke On Error GoTo uttalelse å fortelle Excel for å hoppe til en bestemt linje med kode.

    For eksempel i følgende liten kode, forteller du Excel til å dele verdien i celle A1 av verdien i celle A2, og deretter plassere svaret i celle A3. Lett. Hva kan gå galt?
    Sub Makro1 () Range ("A3"). Verdi = Range ("A1"). Value /Range ("A2"). ValueEnd Sub

    Som det viser seg, to viktige ting kan gå galt. Hvis celle A2 inneholder 0, får du en dividere med 0 feil. Hvis celle A2 inneholder en ikke-numerisk verdi, får du en type mismatch feil.

    For å unngå en stygg feilmelding, kan du fortelle Excel som ved feil, vil du kode for å hoppe til etiketten heter MyExit .

    I følgende kode er MyExit etiketten etterfulgt av en melding til brukeren som gir gode råd i stedet for en stygg feilmelding. Legg også merke til Exit Sub linje før MyExit etiketten, som sikrer at koden vil bare gå hvis det oppstår ingen feil:
    Sub Makro1 () On Error GoTo MyExitRange ("A3") Verdi = Range ("A1"). .Value /Range ("A2") ValueExit SubMyExit. MsgBox "Vennligst bruk Gyldige Non-Zero Numbers" End Sub
    On Error Resume Next

    Noen ganger vil du Excel til å ignorere en feil, og rett og slett CV å kjøre koden. I slike situasjoner kan du bruke On Error Resume Next uttalelse

    For eksempel er følgende kode ment for å slette en fil som heter GhostFile.exe fra C:. \\ Temp-katalogen. Når filen er slettet, forteller en hyggelig meldingsboks brukeren om at filen er borte:
    Sub Makro1 () Draps "C: \\ Temp \\ GhostFile.exe" MsgBox ". Fil har blitt slettet" End Sub

    Koden fungerer bra hvis det er faktisk en fil som skal slettes. Men hvis noen grunn filen som heter GhostFile.exe ikke eksisterer i mappen C: \\ Temp-stasjon, er en feil kastet

    I dette tilfellet du ikke bryr seg hvis filen ikke er der fordi du. skulle slette den likevel. Så du kan bare ignorere feilen og gå videre med koden

    Ved hjelp av On Error Resume Next uttalelse, koden går sin gang hvorvidt målrettet filen finnes.
    Sub Makro1 () On Error Resume NextKill "C: \\ Temp \\ GhostFile.exe" MsgBox ". Fil har blitt slettet" End Sub
    On Error GoTo 0

    Når du bruker visse feil uttalelser, kan det være nødvendig å tilbakestille feilen -Kontrollere oppførsel av VBA. For å forstå hva dette betyr, ta en titt på det neste eksempelet

    Her må du først ønsker å slette en fil som heter GhostFile.exe fra C:. \\ Temp-katalogen. For å unngå feil som kan stamme fra det faktum at målrettet filen ikke finnes, bruker du On Error Resume Next uttalelse. Etter det, prøver du å gjøre noen mistenkte matematikk ved å dele 100 /Mike:
    Sub Makro1 () On Error Resume NextKill "C: \\ Temp \\ GhostFile.exe" Range ("A3") Verdi = 100 /"Mike. "End Sub

    Kjører denne delen av koden skal generere en feil på grunn av uklar matematikk, men det gjør det ikke. Hvorfor? Fordi den siste instruksjonen du ga til koden var On Error Resume Next. Eventuelle feil oppstått etter at linjen er effektivt ignorert

    For å bøte på dette problemet, kan du bruke On Error GoTo 0 statement å gjenoppta normal feil sjekker oppførsel.
    Sub Makro1 () On Error Resume NextKill " C: \\ Temp \\ GhostFile.exe "On Error GoTo 0Range (" A3 "). Verdi = 100 /" Mike "End Sub

    Denne koden vil ignorere feil inntil On Error GoTo 0 uttalelse. Etter den uttalelsen, går koden tilbake til normal feilsjekking og utløser den forventede feilen stammer fra fuzzy math. Anmeldelser