Fejlbehandlere til Excel-makroer

Fejlbehandlere giver dig mulighed for at angive, hvad der sker, når der opstår en fejl, mens din Excel-makrokode kører. Fejlbehandlere er linjer, der ligner følgende:

Ved fejl GoTo MyError

Uden fejlbehandlere vil enhver fejl, der opstår i din kode, bede Excel om at aktivere en mindre end nyttig fejlmeddelelse, der typisk ikke tydeligt fortæller, hvad der skete. Men ved hjælp af fejlbehandlere kan du vælge at ignorere fejlen eller afslutte koden elegant med din egen besked til brugeren.

Der er tre typer af fejlerklæringer:

  • Ved fejl GoTo SomeLabel: Koden hopper til den angivne etiket.

  • Ved fejlgenoptagelse næste: Fejlen ignoreres, og koden genoptages.

  • Ved fejl GoTo 0: VBA nulstilles til normal fejlkontrolfunktion.

Ved fejl GoTo SomeLabel

Nogle gange betyder en fejl i din kode, at du elegant skal afslutte proceduren og give dine brugere en klar besked. I disse situationer kan du bruge On Error GoTo-erklæringen til at bede Excel om at hoppe til en bestemt linje kode.

For eksempel, i det følgende lille stykke kode fortæller du Excel at dividere værdien i celle A1 med værdien i celle A2 og derefter placere svaret i celle A3. Let. Hvad kunne gå galt?

Undermakro1()
Range("A3").Value = Range("A1").Value / Range("A2").Value
Slut Sub

Som det viser sig, kan to store ting gå galt. Hvis celle A2 indeholder 0, får du en divider med 0 fejl. Hvis celle A2 indeholder en ikke-numerisk værdi, får du en typemismatch-fejl.

For at undgå en grim fejlmeddelelse kan du fortælle Excel, at Ved fejl vil du have, at kodeudførelsen skal hoppe til etiketten kaldet MyExit.

I den følgende kode efterfølges MyExit-etiketten af ​​en besked til brugeren, der giver venlige råd i stedet for en grim fejlmeddelelse. Bemærk også Exit Sub-linjen før MyExit-etiketten, som sikrer, at koden simpelthen afsluttes, hvis der ikke opstår nogen fejl:

Undermakro1()
Ved fejl GoTo MyExit
Range("A3").Value = Range("A1").Value / Range("A2").Value
Afslut Sub
MyExit:
MsgBox "Brug venligst gyldige ikke-nul numre"
Slut Sub

Ved fejl Genoptag Næste

Nogle gange vil du have Excel til at ignorere en fejl og blot genoptage kørsel af koden. I disse situationer kan du bruge erklæringen Ved fejl Genoptag næste.

For eksempel er det følgende stykke kode beregnet til at slette en fil kaldet GhostFile.exe fra C:Temp-mappen. Når filen er slettet, fortæller en pæn beskedboks brugeren, at filen er væk:

Undermakro1()
Dræb "C:TempGhostFile.exe"
MsgBox "Filen er blevet slettet."
Slut Sub

Koden fungerer godt, hvis der faktisk er en fil, der skal slettes. Men hvis filen kaldet GhostFile.exe af en eller anden grund ikke findes i C:Temp-drevet, vises der en fejl.

I dette tilfælde er du ligeglad med, om filen ikke er der, fordi du alligevel ville slette den. Så du kan blot ignorere fejlen og gå videre med koden.

Ved at bruge sætningen On Error Resume Next, kører koden sit forløb, uanset om den målrettede fil eksisterer eller ej:

Undermakro1()
Ved fejl Genoptag Næste
Dræb "C:TempGhostFile.exe"
MsgBox "Filen er blevet slettet."
Slut Sub

Ved fejl GoTo 0

Når du bruger visse fejlsætninger, kan det være nødvendigt at nulstille VBA's fejlkontrolfunktion. For at forstå, hvad dette betyder, skal du tage et kig på det næste eksempel.

Her vil du først slette en fil kaldet GhostFile.exe fra C:Temp-mappen. For at undgå fejl, der kan stamme fra det faktum, at den målrettede fil ikke eksisterer, bruger du erklæringen Ved fejl Genoptag næste. Derefter prøver du at lave noget suspekt matematik ved at dividere 100/Mike:

Undermakro1()
Ved fejl Genoptag Næste
Dræb "C:TempGhostFile.exe"
Range("A3").Værdi = 100 / "Mike"
Slut Sub

Kørsel af dette stykke kode burde generere en fejl på grund af den uklare matematik, men det gør den ikke. Hvorfor? Fordi den sidste instruktion du gav til koden var On Error Resume Next. Enhver fejl, der opstår efter den linje, ignoreres effektivt.

For at afhjælpe dette problem kan du bruge On Error GoTo 0-sætningen til at genoptage normal fejlkontrolfunktion:

Undermakro1()
Ved fejl Genoptag Næste
Dræb "C:TempGhostFile.exe"
Ved fejl GoTo 0
Range("A3").Værdi = 100 / "Mike"
Slut Sub

Denne kode vil ignorere fejl indtil On Error GoTo 0-sætningen. Efter denne erklæring går koden tilbage til normal fejlkontrol og udløser den forventede fejl, der stammer fra den uklare matematik.


Sådan blokerer du Microsoft Word fra at åbne filer i skrivebeskyttet tilstand på Windows

Sådan blokerer du Microsoft Word fra at åbne filer i skrivebeskyttet tilstand på Windows

Sådan blokerer du Microsoft Word fra at åbne filer i skrivebeskyttet tilstand på Windows Microsoft Word åbner filer i skrivebeskyttet tilstand, hvilket gør det umuligt at redigere det? Bare rolig, metoderne er nedenfor

Sådan rettes forkert udskrivning af Microsoft Word-dokumenter

Sådan rettes forkert udskrivning af Microsoft Word-dokumenter

Sådan rettes fejl ved udskrivning af forkerte Microsoft Word-dokumenter Fejl ved udskrivning af Word-dokumenter med ændrede skrifttyper, rodede afsnit, manglende tekst eller tabt indhold er ret almindelige. Men lad være

Slet pen- og highlighter-tegninger på dine PowerPoint-dias

Slet pen- og highlighter-tegninger på dine PowerPoint-dias

Hvis du har brugt pennen eller highlighteren til at tegne på dine PowerPoint-dias under en præsentation, kan du gemme tegningerne til næste præsentation eller slette dem, så næste gang du viser den, starter du med rene PowerPoint-dias. Følg disse instruktioner for at slette pen- og highlighter-tegninger: Sletning af linjer en ved […]

Indhold af stilbibliotek i SharePoint 2010

Indhold af stilbibliotek i SharePoint 2010

Style-biblioteket indeholder CSS-filer, Extensible Stylesheet Language-filer (XSL) og billeder, der bruges af foruddefinerede mastersider, sidelayouts og kontrolelementer i SharePoint 2010. For at finde CSS-filer i Style-biblioteket på et udgivelsessted: Vælg Site Actions→ View Alt webstedsindhold. Indholdet af webstedet vises. Style-biblioteket ligger i […]

Formater tal i tusinder og millioner i Excel-rapporter

Formater tal i tusinder og millioner i Excel-rapporter

Overvæld ikke dit publikum med gigantiske tal. I Microsoft Excel kan du forbedre læsbarheden af ​​dine dashboards og rapporter ved at formatere dine tal, så de vises i tusinder eller millioner.

Sådan deler og følger du SharePoint-websteder

Sådan deler og følger du SharePoint-websteder

Lær, hvordan du bruger SharePoints sociale netværksværktøjer, der lader enkeltpersoner og grupper kommunikere, samarbejde, dele og forbinde.

Sådan konverteres datoer til julianske formater i Excel

Sådan konverteres datoer til julianske formater i Excel

Julianske datoer bruges ofte i produktionsmiljøer som et tidsstempel og hurtig reference for et batchnummer. Denne type datokodning giver detailhandlere, forbrugere og serviceagenter mulighed for at identificere, hvornår et produkt blev fremstillet, og dermed produktets alder. Julianske datoer bruges også i programmering, militæret og astronomi. Forskellige […]

Sådan opretter du en Access Web App

Sådan opretter du en Access Web App

Du kan oprette en webapp i Access 2016. Så hvad er en webapp overhovedet? Nå, web betyder, at det er online, og app er kun en forkortelse for "applikation". En Custom Web App er en online databaseapplikation, der tilgås fra skyen ved hjælp af en browser. Du bygger og vedligeholder webappen i desktopversionen […]

Hurtig startlinje i SharePoint 2010

Hurtig startlinje i SharePoint 2010

De fleste sider i SharePoint 2010 viser en liste over navigationslinks på linjen Hurtig start langs venstre side af siden. Hurtig startlinjen viser links til fremhævet webstedsindhold såsom lister, biblioteker, websteder og udgivelsessider. Hurtigstartlinjen indeholder to meget vigtige links: Linket Alt webstedsindhold: […]

Hvad betyder Solver-fejlmeddelelserne i Excel?

Hvad betyder Solver-fejlmeddelelserne i Excel?

Ved simple problemer finder Solver i Excel som regel hurtigt de optimale Solver-variableværdier for objektivfunktionen. Men i nogle tilfælde har Solver problemer med at finde de Solver-variableværdier, der optimerer objektivfunktionen. I disse tilfælde viser Solver typisk en meddelelse eller en fejlmeddelelse, der beskriver eller diskuterer det problem, der […]