Hur man använder OnError-satsen i Excel 2016 VBA

När du behöver hantera fel i Excel VBA kan du använda OnError-satsen. Det finns dock några saker du behöver veta först. Du kan använda On Error-satsen på tre sätt.

Syntax Vad den gör
Vid fel GoTo- etikett Efter att ha kört denna sats återupptar VBA exekveringen vid
satsen efter den angivna etiketten. Du måste inkludera ett kolon
efter etiketten så att VBA känner igen den som en etikett.
Vid fel GoTo 0 Efter att ha kört denna sats återupptar VBA sitt normala
felkontrollbeteende. Använd denna sats efter att ha använt någon av de
andra On Error-satserna eller när du vill ta bort felhantering
i din procedur.
Vid fel Resume Next Efter att ha kört denna sats ignorerar VBA helt enkelt alla fel
och återupptar körningen med nästa sats.

Återupptas efter ett fel

I vissa fall vill du helt enkelt att rutinen ska avslutas graciöst när ett fel inträffar. Du kan till exempel visa ett meddelande som beskriver felet och sedan avsluta proceduren. (Exemplet EnterSquareRoot5 som visades tidigare använder den här tekniken.) I andra fall vill du återhämta dig från felet, om möjligt.

För att återställa ett fel måste du använda ett CV-uttalande. Detta rensar feltillståndet och låter dig fortsätta körningen på någon plats. Du kan använda CV-meddelandet på tre sätt.

Syntax Vad den gör
Återuppta Körningen återupptas med satsen som orsakade felet. Använd
detta om din felhanteringskod löser problemet och
det är okej att fortsätta.
Fortsätt Nästa Utförandet återupptas med satsen omedelbart efter
satsen som orsakade felet. Detta ignorerar i huvudsak
felet.
Återuppta etikett Körningen återupptas vid den etikett du anger.

Följande exempel använder en Resume-sats efter att ett fel uppstår:

Sub EnterSquareRoot6()
  Dim Num Som Variant
  Dim Msg As String
  Dim Ans Som heltal
Försök igen:
' Ställ in felhantering
  Vid fel GoTo BadEntry
' Fråga efter ett värde
  Num = InputBox(”Ange ett värde”)
  Om Num = ““ Avsluta Sub
' Infoga kvadratroten
  ActiveCell.Value = Sqr(Num)
  Avsluta Sub
BadEntry:
  Msg = Err.Number & “: “ & Error(Err.Number)
  Msg = Msg & vbNewLine & vbNewLine
  Msg = Msg & "Se till att ett intervall är valt, "
  Msg = Msg & "arket är inte skyddat",
  Msg = Msg & "och du anger ett icke-negativt värde."
  Msg = Msg & vbNewLine & vbNewLine & "Försök igen?"
  Ans = MsgBox(Msg, vbYesNo + vbCritical)
  Om Ans = vbYes Återuppta försök igen
Avsluta Sub

Denna procedur har en annan etikett: TryAgain. Om ett fel uppstår fortsätter exekveringen vid BadEntry-etiketten och koden visar meddelandet nedan. Om användaren svarar genom att klicka på Ja, startar Resume-satsen och körningen hoppar tillbaka till TryAgain-etiketten. Om användaren klickar på Nej, avslutas proceduren.

Hur man använder OnError-satsen i Excel 2016 VBA

Om ett fel uppstår kan användaren bestämma om han vill försöka igen.

Observera att felmeddelandet även innehåller felnumret, tillsammans med den "officiella" felbeskrivningen.

Resume-satsen rensar feltillståndet innan du fortsätter. För att se detta, försök att ersätta följande sats med den näst sista satsen i föregående exempel:

Om Ans = vbYes Gå till Försök igen

Koden fungerar inte korrekt om du använder GoTo istället för Resume. För att demonstrera, ange ett negativt tal. Du får felmeddelandet. Klicka på Ja för att försöka igen och ange ett annat negativt tal. Detta andra fel fångas inte eftersom det ursprungliga feltillståndet inte rensades.

Felhantering i ett nötskal

Här är en snabb och smutsig sammanfattning för att hjälpa dig att hålla alla dessa felhanteringsaffärer raka. Ett block med felhanteringskod har följande egenskaper:

  • Det börjar omedelbart efter etiketten som anges i On Error-satsen.

  • Det bör bara nås av ditt makro om ett fel uppstår. Det betyder att du måste använda en sats som Exit Sub eller Exit Function omedelbart före etiketten.

  • Det kan kräva ett CV-uttalande. Om du väljer att inte avbryta proceduren när ett fel uppstår, måste du köra en Resume-sats innan du återgår till huvudkoden.

Att veta när man ska ignorera fel

I vissa fall är det helt okej att ignorera fel. Det är då uttalandet On Error Resume Next kommer in i bilden.

Följande exempel går igenom varje cell i det valda området och konverterar värdet till dess kvadratrot. Den här proceduren genererar ett felmeddelande om någon cell i markeringen innehåller ett negativt tal eller text:

Sub SelectionSqrt()
  Dim cell som intervall
  Om TypeName(Selection) <> "Range" Avsluta Sub
  För varje cell i urval
    cell.Value = Sqr(cell.Value)
  Nästa cell
Avsluta Sub

I det här fallet kanske du helt enkelt vill hoppa över en cell som innehåller ett värde som du inte kan konvertera till en kvadratrot. Du kan skapa alla möjliga felkontrollfunktioner genom att använda If-Then-strukturer, men du kan skapa en bättre (och enklare) lösning genom att helt enkelt ignorera de fel som uppstår.

Följande rutin åstadkommer detta genom att använda påståendet Vid Fel Resume Next:

Sub SelectionSqrt()
  Dim cell som intervall
  Om TypeName(Selection) <> "Range" Avsluta Sub
  Vid fel Resume Next
  För varje cell i urval
    cell.Value = Sqr(cell.Value)
  Nästa cell
Avsluta Sub

I allmänhet kan du använda en On Error Resume Next-sats om du anser att felen är ofarliga eller oviktiga för din uppgift.

Leave a Comment

Hur man använder kommandona Gör om och upprepa i Word 2016

Hur man använder kommandona Gör om och upprepa i Word 2016

Lär dig att använda kommandona Gör om och Upprepa i Word 2016 för att effektivt hantera dina dokument. Dessa funktioner hjälper dig att enkelt ångra och återställa ändringar.

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows Microsoft Word öppnar filer i skrivskyddat läge, vilket gör det omöjligt att redigera dem? Oroa dig inte, metoderna finns nedan

Hur man åtgärdar felaktig utskrift av Microsoft Word-dokument

Hur man åtgärdar felaktig utskrift av Microsoft Word-dokument

Så här åtgärdar du fel vid utskrift av felaktiga Microsoft Word-dokument Fel vid utskrift av Word-dokument med ändrade teckensnitt, röriga stycken, saknad text eller förlorat innehåll är ganska vanligt. Men gör det inte

Radera ritningar med penna och överstrykningspenna på dina PowerPoint-bilder

Radera ritningar med penna och överstrykningspenna på dina PowerPoint-bilder

Om du har använt pennan eller överstrykningspennan för att rita på dina PowerPoint-bilder under en presentation, kan du spara ritningarna till nästa presentation eller radera dem så att nästa gång du visar den börjar du med rena PowerPoint-bilder. Följ dessa instruktioner för att radera ritningar med penna och överstrykningspenna: Radera linjer ett på […]

Stilbiblioteksinnehåll i SharePoint 2010

Stilbiblioteksinnehåll i SharePoint 2010

Stilbiblioteket innehåller CSS-filer, XSL-filer (Extensible Stylesheet Language) och bilder som används av fördefinierade mallsidor, sidlayouter och kontroller i SharePoint 2010. För att hitta CSS-filer i stilbiblioteket på en publiceringswebbplats: Välj Webbplatsåtgärder→Visa Allt webbplatsinnehåll. Innehållet på webbplatsen visas. Style-biblioteket ligger i […]

Formatera siffror i tusentals och miljoner i Excel-rapporter

Formatera siffror i tusentals och miljoner i Excel-rapporter

Överväldiga inte din publik med gigantiska siffror. I Microsoft Excel kan du förbättra läsbarheten för dina instrumentpaneler och rapporter genom att formatera dina siffror så att de visas i tusentals eller miljoner.

Hur man delar och följer SharePoint-webbplatser

Hur man delar och följer SharePoint-webbplatser

Lär dig hur du använder SharePoints sociala nätverksverktyg som låter individer och grupper kommunicera, samarbeta, dela och ansluta.

Hur man konverterar datum till Julian-format i Excel

Hur man konverterar datum till Julian-format i Excel

Julianska datum används ofta i tillverkningsmiljöer som en tidsstämpel och snabbreferens för ett batchnummer. Denna typ av datumkodning tillåter återförsäljare, konsumenter och serviceagenter att identifiera när en produkt tillverkades och därmed produktens ålder. Julianska datum används också i programmering, militären och astronomi. Annorlunda […]

Hur man skapar en Access Web App

Hur man skapar en Access Web App

Du kan skapa en webbapp i Access 2016. Så vad är en webbapp egentligen? Tja, webben betyder att den är online, och appen är bara en förkortning för "applikation". En anpassad webbapp är en onlinedatabasapplikation som nås från molnet med en webbläsare. Du bygger och underhåller webbappen i skrivbordsversionen […]

Snabbstartsfält i SharePoint 2010

Snabbstartsfält i SharePoint 2010

De flesta sidor i SharePoint 2010 visar en lista med navigeringslänkar i snabbstartsfältet till vänster på sidan. Snabbstartsfältet visar länkar till utvalt webbplatsinnehåll som listor, bibliotek, webbplatser och publiceringssidor. Snabbstartsfältet innehåller två mycket viktiga länkar: Länken Allt webbplatsinnehåll: […]