Slik bruker du OnError-erklæringen i Excel 2016 VBA

Når du trenger å håndtere feil i Excel VBA, kan du bruke OnError-setningen. Det er imidlertid et par ting du må vite først. Du kan bruke On Error-setningen på tre måter.

Syntaks Hva det gjør
Ved feil GoTo- etikett Etter å ha utført denne setningen, gjenopptar VBA kjøringen ved
setningen etter den angitte etiketten. Du må inkludere et kolon
etter etiketten slik at VBA gjenkjenner den som en etikett.
Ved feil GoTo 0 Etter å ha utført denne setningen, gjenopptar VBA sin normale
feilkontrolloppførsel. Bruk denne setningen etter å ha brukt en av de
andre On Error-setningene eller når du vil fjerne feilhåndtering
i prosedyren.
Ved feil på Fortsett neste Etter å ha utført denne setningen, ignorerer VBA ganske enkelt alle feil
og gjenopptar kjøringen med neste setning.

Gjenopptar etter en feil

I noen tilfeller vil du ganske enkelt at rutinen skal avsluttes elegant når det oppstår en feil. Du kan for eksempel vise en melding som beskriver feilen og deretter avslutte prosedyren. (EnterSquareRoot5-eksemplet vist tidligere bruker denne teknikken.) I andre tilfeller ønsker du å gjenopprette feilen, hvis mulig.

For å gjenopprette fra en feil, må du bruke en CV-erklæring. Dette fjerner feiltilstanden og lar deg fortsette kjøringen på et sted. Du kan bruke CV-erklæringen på tre måter.

Syntaks Hva det gjør
Gjenoppta Utførelsen fortsetter med setningen som forårsaket feilen. Bruk
denne hvis feilhåndteringskoden din løser problemet og
det er greit å fortsette.
Fortsett neste Utførelsen fortsetter med setningen umiddelbart etter
setningen som forårsaket feilen. Dette ignorerer i hovedsak
feilen.
Fortsett- etikett Kjøringen fortsetter på etiketten du angir.

Følgende eksempel bruker en CV-setning etter at det oppstår en feil:

Sub EnterSquareRoot6()
  Dim nummer som variant
  Dim melding som streng
  Dim Ans As Heltall
Prøv igjen:
' Sett opp feilhåndtering
  Ved feil GoTo BadEntry
' Spør om en verdi
  Num = InputBox(“Skriv inn en verdi”)
  Hvis Num = ““ Avslutt Sub
' Sett inn kvadratroten
  ActiveCell.Value = Sqr(tall)
  Avslutt Sub
BadEntry:
  Msg = Err.Number & “: “ & Error(Err.Number)
  Msg = Msg & vbNewLine & vbNewLine
  Msg = Msg & "Sørg for at et område er valgt,"
  Msg = Msg & "arket er ikke beskyttet",
  Msg = Msg & "og du angir en ikke-negativ verdi."
  Msg = Msg & vbNewLine & vbNewLine & "Prøve igjen?"
  Ans = MsgBox(Msg, vbYesNo + vbCritical)
  Hvis Ans = vbYes, gjenoppta Prøv igjen
End Sub

Denne prosedyren har en annen etikett: TryAgain. Hvis det oppstår en feil, fortsetter kjøringen ved BadEntry-etiketten, og koden viser meldingen nedenfor. Hvis brukeren svarer ved å klikke Ja, starter Resume-setningen, og utførelsen hopper tilbake til TryAgain-etiketten. Hvis brukeren klikker Nei, avsluttes prosedyren.

Slik bruker du OnError-erklæringen i Excel 2016 VBA

Hvis det oppstår en feil, kan brukeren bestemme om han vil prøve igjen.

Legg merke til at feilmeldingen også inkluderer feilnummeret, sammen med den "offisielle" feilbeskrivelsen.

Fortsett-setningen fjerner feiltilstanden før du fortsetter. For å se dette, prøv å erstatte den nest siste setningen i det foregående eksempelet med følgende setning:

Hvis Ans = vbYes Gå til Prøv igjen

Koden fungerer ikke riktig hvis du bruker GoTo i stedet for Gjenoppta. For å demonstrere, skriv inn et negativt tall. Du får feilmeldingen. Klikk på Ja for å prøve igjen og skriv inn et annet negativt tall. Denne andre feilen er ikke fanget fordi den opprinnelige feiltilstanden ikke ble fjernet.

Feilhåndtering i et nøtteskall

For å hjelpe deg å holde all denne feilhåndteringsvirksomheten rett, her er en rask og skitten oppsummering. En blokk med feilhåndteringskode har følgende egenskaper:

  • Den begynner umiddelbart etter etiketten som er spesifisert i On Error-setningen.

  • Makroen din skal bare nås hvis det oppstår en feil. Dette betyr at du må bruke en setning som Exit Sub eller Exit Function rett før etiketten.

  • Det kan kreve en CV-erklæring. Hvis du velger å ikke avbryte prosedyren når det oppstår en feil, må du utføre en Resume-setning før du går tilbake til hovedkoden.

Å vite når du skal ignorere feil

I noen tilfeller er det helt greit å ignorere feil. Det er da On Error Resume Next-erklæringen kommer inn.

Følgende eksempel går gjennom hver celle i det valgte området og konverterer verdien til kvadratroten. Denne prosedyren genererer en feilmelding hvis en celle i utvalget inneholder et negativt tall eller tekst:

Sub SelectionSqrt()
  Dim celle som område
  Hvis TypeName(Selection) <> "Range" Avslutt Sub
  For hver celle i utvalg
    celle.Value = Sqr(cell.Value)
  Neste celle
End Sub

I dette tilfellet vil du kanskje bare hoppe over en celle som inneholder en verdi du ikke kan konvertere til en kvadratrot. Du kan lage alle slags feilkontrollfunksjoner ved å bruke If-Then-strukturer, men du kan tenke ut en bedre (og enklere) løsning ved å ignorere feilene som oppstår.

Følgende rutine oppnår dette ved å bruke setningen On Error Resume Next:

Sub SelectionSqrt()
  Dim celle som område
  Hvis TypeName(Selection) <> "Range" Avslutt Sub
  Ved feil på Fortsett neste
  For hver celle i utvalg
    celle.Value = Sqr(cell.Value)
  Neste celle
End Sub

Generelt kan du bruke en On Error Resume Next-erklæring hvis du anser feilene for å være ufarlige eller uvesentlige for oppgaven din.


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 […]