Feilbehandlere for Excel-makroer

Feilbehandlere lar deg spesifisere hva som skjer når det oppstår en feil mens Excel-makrokoden kjører. Feilbehandlere er linjer som ligner på følgende:

Ved feil GoTo MyError

Uten feilbehandlere vil enhver feil som oppstår i koden din be Excel om å aktivere en mindre enn nyttig feilmelding som vanligvis ikke tydelig formidler hva som skjedde. Ved hjelp av feilbehandlere kan du imidlertid velge å ignorere feilen eller avslutte koden med din egen melding til brukeren.

Det er tre typer On Error-setninger:

  • Ved feil GoTo SomeLabel: Koden hopper til den angitte etiketten.

  • On Error Resume Next: Feilen ignoreres og koden gjenopptas.

  • Ved feil GoTo 0: VBA tilbakestiller til normal feilkontrolloppførsel.

Ved feil GoTo SomeLabel

Noen ganger betyr en feil i koden at du må avslutte prosedyren elegant og gi brukerne en klar melding. I disse situasjonene kan du bruke On Error GoTo-setningen til å fortelle Excel å hoppe til en bestemt linje med kode.

For eksempel, i den følgende lille kodebiten ber du Excel om å dele verdien i celle A1 med verdien i celle A2, og deretter plassere svaret i celle A3. Lett. Hva kan gå galt?

Sub Makro1()
Område("A3"). Verdi = Område("A1"). Verdi / område("A2"). Verdi
End Sub

Det viser seg at to store ting kan gå galt. Hvis celle A2 inneholder 0, får du en del på 0 feil. Hvis celle A2 inneholder en ikke-numerisk verdi, får du en typefeil.

For å unngå en ekkel feilmelding, kan du fortelle Excel at Ved feil vil du at kodekjøringen skal hoppe til etiketten som heter MyExit.

I den følgende koden etterfølges MyExit-etiketten av en melding til brukeren som gir vennlige råd i stedet for en ekkel feilmelding. Legg også merke til Exit Sub-linjen før MyExit-etiketten, som sikrer at koden ganske enkelt avsluttes hvis det ikke oppstår noen feil:

Sub Makro1()
Ved feil GoTo MyExit
Område("A3"). Verdi = Område("A1"). Verdi / område("A2"). Verdi
Avslutt Sub
MyExit:
MsgBox "Vennligst bruk gyldige tall som ikke er null"
End Sub

Ved feil på Fortsett neste

Noen ganger vil du at Excel skal ignorere en feil og ganske enkelt fortsette å kjøre koden. I disse situasjonene kan du bruke setningen Ved feil ved gjenoppta neste.

For eksempel er følgende kodebit ment å slette en fil kalt GhostFile.exe fra C:Temp-katalogen. Etter at filen er slettet, forteller en hyggelig meldingsboks brukeren at filen er borte:

Sub Makro1()
Drep "C:TempGhostFile.exe"
MsgBox "Filen har blitt slettet."
End Sub

Koden fungerer utmerket hvis det faktisk er en fil å slette. Men hvis filen som heter GhostFile.exe av en eller annen grunn ikke eksisterer i C:Temp-stasjonen, oppstår en feil.

I dette tilfellet bryr du deg ikke om filen ikke er der fordi du skulle slette den uansett. Så du kan ganske enkelt ignorere feilen og gå videre med koden.

Ved å bruke On Error Resume Next-setningen, kjører koden sin kurs uansett om målfilen eksisterer eller ikke:

Sub Makro1()
Ved feil på Fortsett neste
Drep "C:TempGhostFile.exe"
MsgBox "Filen har blitt slettet."
End Sub

Ved feil GoTo 0

Når du bruker visse feilsetninger, kan det være nødvendig å tilbakestille feilkontrolloppførselen til VBA. For å forstå hva dette betyr, ta en titt på neste eksempel.

Her vil du først slette en fil kalt GhostFile.exe fra C:Temp-katalogen. For å unngå feil som kan stamme fra det faktum at målfilen ikke eksisterer, bruker du On Error Resume Next-setningen. Etter det prøver du å gjøre litt suspekt matematikk ved å dele 100/Mike:

Sub Makro1()
Ved feil på Fortsett neste
Drep "C:TempGhostFile.exe"
Range("A3"). Verdi = 100 / "Mike"
End Sub

Å kjøre denne kodebiten burde 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. Enhver feil som oppstår etter den linjen blir effektivt ignorert.

For å løse dette problemet kan du bruke On Error GoTo 0-setningen for å gjenoppta normal feilkontrolloppførsel:

Sub Makro1()
Ved feil på Fortsett neste
Drep "C:TempGhostFile.exe"
Ved feil GoTo 0
Range("A3"). Verdi = 100 / "Mike"
End Sub

Denne koden vil ignorere feil inntil On Error GoTo 0-setningen. Etter den uttalelsen går koden tilbake til normal feilkontroll og utløser den forventede feilen som stammer fra den uklare matematikken.


Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows Microsoft Word åpner filer i skrivebeskyttet modus, noe som gjør det umulig å redigere dem? Ikke bekymre deg, metodene er nedenfor

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Slik fikser du feil ved utskrift av feil Microsoft Word-dokumenter Feil ved utskrift av Word-dokumenter med endrede fonter, rotete avsnitt, manglende tekst eller tapt innhold er ganske vanlig. Men ikke gjør det

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Hvis du har brukt pennen eller merkepennen til å tegne på PowerPoint-lysbildene dine under en presentasjon, kan du lagre tegningene til neste presentasjon eller slette dem, slik at du neste gang du viser dem starter med rene PowerPoint-lysbilder. Følg disse instruksjonene for å slette penn- og merkepenntegninger: Slette linje én på […]

Style Library-innhold i SharePoint 2010

Style Library-innhold i SharePoint 2010

Stilbiblioteket inneholder CSS-filer, Extensible Stylesheet Language-filer (XSL) og bilder som brukes av forhåndsdefinerte mastersider, sideoppsett og kontroller i SharePoint 2010. For å finne CSS-filer i stilbiblioteket til et publiseringsnettsted: Velg Site Actions→ View Alt innhold på nettstedet. Innholdet på nettstedet vises. Style-biblioteket ligger i […]

Formater tall i tusenvis og millioner i Excel-rapporter

Formater tall i tusenvis og millioner i Excel-rapporter

Ikke overveld publikum med gigantiske tall. I Microsoft Excel kan du forbedre lesbarheten til dashbordene og rapportene dine ved å formatere tallene dine slik at de vises i tusenvis eller millioner.

Hvordan dele og følge SharePoint-nettsteder

Hvordan dele og følge SharePoint-nettsteder

Lær hvordan du bruker SharePoints sosiale nettverksverktøy som lar enkeltpersoner og grupper kommunisere, samarbeide, dele og koble til.

Hvordan konvertere datoer til julianske formater i Excel

Hvordan konvertere datoer til julianske formater i Excel

Julianske datoer brukes ofte i produksjonsmiljøer som et tidsstempel og hurtigreferanse for et batchnummer. Denne typen datokoding lar forhandlere, forbrukere og serviceagenter identifisere når et produkt ble laget, og dermed alderen på produktet. Julianske datoer brukes også i programmering, militæret og astronomi. Forskjellig […]

Hvordan lage en Access Web App

Hvordan lage en Access Web App

Du kan lage en nettapp i Access 2016. Så hva er en nettapp egentlig? Vel, nettet betyr at det er online, og appen er bare en forkortelse for "applikasjon". En Custom Web App er en online databaseapplikasjon som du får tilgang til fra skyen ved hjelp av en nettleser. Du bygger og vedlikeholder nettappen i skrivebordsversjonen […]

Hurtigstartlinje i SharePoint 2010

Hurtigstartlinje i SharePoint 2010

De fleste sidene i SharePoint 2010 viser en liste over navigasjonskoblinger på hurtigstartlinjen langs venstre side av siden. Hurtigstartlinjen viser koblinger til innhold på nettstedet som lister, biblioteker, nettsteder og publiseringssider. Hurtigstartlinjen inneholder to svært viktige lenker: Linken for alt nettstedinnhold: […]

Hva betyr løserfeilmeldingene i Excel?

Hva betyr løserfeilmeldingene i Excel?

For enkle problemer finner Solver i Excel vanligvis raskt de optimale Solver-variabelverdiene for objektivfunksjonen. Men i noen tilfeller har Solver problemer med å finne Solver-variabelverdiene som optimerer objektivfunksjonen. I disse tilfellene viser Solver vanligvis en melding eller en feilmelding som beskriver eller diskuterer problemet som […]