Sådan bruges OnError-erklæringen i Excel 2016 VBA

Når du skal håndtere fejl i Excel VBA, kan du bruge OnError-sætningen. Der er dog et par ting, du skal vide først. Du kan bruge On Error-sætningen på tre måder.

Syntaks Hvad det gør
Ved fejl GoTo label Efter at have udført denne sætning, genoptager VBA udførelsen ved
sætningen efter den angivne etiket. Du skal inkludere et kolon
efter etiketten, så VBA genkender den som en etiket.
Ved fejl GoTo 0 Efter at have udført denne sætning, genoptager VBA sin normale
fejlkontrolfunktion. Brug denne erklæring efter at have brugt en af ​​de
andre On Error-sætninger, eller når du vil fjerne fejlhåndtering
i din procedure.
Ved fejl Genoptag Næste Efter at have udført denne sætning ignorerer VBA simpelthen alle fejl
og genoptager udførelsen med den næste sætning.

Genoptager efter en fejl

I nogle tilfælde vil du blot have, at rutinen afsluttes elegant, når der opstår en fejl. For eksempel kan du vise en meddelelse, der beskriver fejlen, og derefter afslutte proceduren. (Eksemplet med EnterSquareRoot5 vist tidligere bruger denne teknik.) I andre tilfælde vil du, hvis det er muligt, genoprette fejlen.

For at genoprette en fejl skal du bruge en CV-erklæring. Dette rydder fejltilstanden og giver dig mulighed for at fortsætte udførelsen et eller andet sted. Du kan bruge CV-erklæringen på tre måder.

Syntaks Hvad det gør
Genoptag Udførelsen genoptages med den erklæring, der forårsagede fejlen. Brug
dette, hvis din fejlhåndteringskode løser problemet, og
det er okay at fortsætte.
Genoptag næste Udførelsen genoptages med erklæringen umiddelbart efter
erklæringen, der forårsagede fejlen. Dette ignorerer i det væsentlige
fejlen.
Genoptag etiket Udførelsen genoptages på den etiket, du angiver.

Følgende eksempel bruger en CV-sætning, efter der opstår en fejl:

Sub EnterSquareRoot6()
  Dim nummer som variant
  Dæmp besked som streng
  Dim Ans Som heltal
Prøv igen:
' Konfigurer fejlhåndtering
  Ved fejl GoTo BadEntry
' Bed om en værdi
  Num = InputBox(“Indtast en værdi”)
  Hvis Num = ““ Afslut Sub
' Indsæt kvadratroden
  ActiveCell.Value = Sqr(Num)
  Afslut 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 indtaster en ikke-negativ værdi."
  Msg = Msg & vbNewLine & vbNewLine & "Prøv igen?"
  Ans = MsgBox(Msg, vbYesNo + vbCritical)
  Hvis Ans = vbYes Så genoptag Prøv igen
Slut Sub

Denne procedure har en anden etiket: TryAgain. Hvis der opstår en fejl, fortsætter eksekveringen ved BadEntry-etiketten, og koden viser meddelelsen nedenfor. Hvis brugeren svarer ved at klikke på Ja, starter Resume-erklæringen, og udførelsen hopper tilbage til TryAgain-etiketten. Hvis brugeren klikker på Nej, afsluttes proceduren.

Sådan bruges OnError-erklæringen i Excel 2016 VBA

Hvis der opstår en fejl, kan brugeren beslutte, om han vil prøve igen.

Bemærk, at fejlmeddelelsen også indeholder fejlnummeret sammen med den "officielle" fejlbeskrivelse.

Genoptag-erklæringen rydder fejltilstanden, før du fortsætter. For at se dette skal du prøve at erstatte den næstsidste sætning i det foregående eksempel med følgende sætning:

Hvis Ans = vbYes Så gå til prøv igen

Koden virker ikke korrekt, hvis du bruger GoTo frem for Genoptag. Indtast et negativt tal for at demonstrere. Du får fejlmeddelelsen. Klik på Ja for at prøve igen, og indtast derefter et andet negativt tal. Denne anden fejl er ikke fanget, fordi den oprindelige fejltilstand ikke blev ryddet.

Fejlhåndtering i en nøddeskal

For at hjælpe dig med at holde hele denne fejlhåndteringsvirksomhed ved lige, er her en hurtig og beskidt oversigt. En blok med fejlhåndteringskode har følgende egenskaber:

  • Den begynder umiddelbart efter den etiket, der er angivet i On Error-sætningen.

  • Den bør kun nås af din makro, hvis der opstår en fejl. Det betyder, at du skal bruge en sætning som Exit Sub eller Exit Function umiddelbart før etiketten.

  • Det kan kræve en CV-erklæring. Hvis du vælger ikke at afbryde proceduren, når der opstår en fejl, skal du udføre en Resume-sætning, før du vender tilbage til hovedkoden.

At vide, hvornår man skal ignorere fejl

I nogle tilfælde er det helt i orden at ignorere fejl. Det er, når erklæringen On Error Resume Next kommer i spil.

Følgende eksempel går gennem hver celle i det valgte område og konverterer værdien til dens kvadratrod. Denne procedure genererer en fejlmeddelelse, hvis en celle i markeringen indeholder et negativt tal eller tekst:

Sub SelectionSqrt()
  Dæmp celle som område
  Hvis TypeName(Selection) <> "Range" Afslut Sub
  For hver celle i udvalgt
    celle.Value = Sqr(cell.Value)
  Næste celle
Slut Sub

I dette tilfælde vil du måske blot springe en celle over, der indeholder en værdi, du ikke kan konvertere til en kvadratrod. Du kan oprette alle mulige fejlkontrolfunktioner ved at bruge If-Then-strukturer, men du kan udtænke en bedre (og enklere) løsning ved blot at ignorere de fejl, der opstår.

Følgende rutine opnår dette ved at bruge erklæringen Ved fejl ved genoptagelse af næste:

Sub SelectionSqrt()
  Dæmp celle som område
  Hvis TypeName(Selection) <> "Range" Afslut Sub
  Ved fejl Genoptag Næste
  For hver celle i udvalgt
    celle.Value = Sqr(cell.Value)
  Næste celle
Slut Sub

Generelt kan du bruge en On Error Resume Next-erklæring, hvis du anser fejlene for at være harmløse eller uden betydning for din opgave.


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