Hem Sociala medier Hur man använder OnError-förklaringen i Excel 2016 VBA - dummies

Hur man använder OnError-förklaringen i Excel 2016 VBA - dummies

Innehållsförteckning:

Video: HUR ANVÄNDER MAN?! 2024

Video: HUR ANVÄNDER MAN?! 2024
Anonim

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 det gör
Om Error GoTo label Efter utförandet av detta uttalande återupptar VBA utförandet i

-sagnet efter den angivna etiketten. Du måste inkludera ett kolon

efter etiketten så att VBA känner igen det som en etikett.

På Error GoTo 0 Efter att ha utfört detta uttalande återupptar VBA sitt normala

felkontroll beteende. Använd detta uttalande efter att du använt ett av de

andra felmeddelandena eller när du vill ta bort felhantering

i din procedur.

Om felet fortsätter Nästa Efter att ha utfört detta uttalande ignorerar VBA helt enkelt alla fel

och återupptas utförande med nästa uttalande.

Återuppta efter ett fel

I vissa fall vill du helt enkelt att rutinen slutar graciöst när ett fel uppstår. Du kan till exempel visa ett meddelande som beskriver felet och avsluta proceduren. (Det tidigare EnterSquareRoot5-exemplet använder denna teknik.) I andra fall vill du återhämta sig från felet om möjligt.

För att återhämta sig från ett fel måste du använda ett CV-meddelande. Detta rensar felet och låter dig fortsätta exekvera på någon plats. Du kan använda CV-påståendet på tre sätt.

Syntax Vad det gör
Fortsätt Exekveringen återupptas med det uttalande som orsakade felet. Använd

detta om din felhanteringskod korrigerar problemet och

det är okej att fortsätta.

Fortsätt Nästa Exekveringen återupptas med uttalandet omedelbart efter det uttalande

som orsakade felet. Detta ignorerar väsentligen felet

.

Fortsätt etikett Exekvering återupptas på etiketten du anger.

Följande exempel använder ett CV-meddelande efter ett fel:

Sub EnterSquareRoot6 () Dim Num Som variant Dim Msg Som String Dim Ans Som Integer TryAgain: 'Konfigurera felhantering På Error GoTo BadEntry "Prompten för ett värde Num = InputBox (" Ange ett värde ") Om Num =" "Avsluta sedan" Sätt in kvadratroten ActiveCell. Värde = Sqr (Num) Exit Sub BadEntry: Msg = Err. Nummer & ":" & Fel (Err.nummer) Msg = Msg & vbNewLine & vbNewLine Msg = Msg & "Kontrollera att ett intervall är markerat," Msg = Msg & "arket är inte skyddat," Msg = Msg & " du anger ett nonnegative värde. "Msg = Msg & vbNewLine & vbNewLine &" Försök igen? "Ans = MsgBox (Msg, vbYesNo + vbCritical) Om Ans = vbYes Fortsätt sedan TryAgain End Sub

Den här proceduren har en annan etikett: TryAgain.Om ett fel uppstår fortsätter körningen på BadEntry-etiketten och koden visar meddelandet nedan. Om användaren svarar genom att klicka på Ja, slår genomsökningsuppsättningen in och körningen springer tillbaka till TryAgain-etiketten. Om användaren klickar på Nej avslutas proceduren.

Om ett fel uppstår kan användaren bestämma om det ska försökas igen.

Observera att felmeddelandet också innehåller felnumret tillsammans med den "officiella" felbeskrivningen.

I återupptappningen raderas felet innan du fortsätter. För att se detta, försök att ersätta följande uttalande för det näst sista tillägget i föregående exempel:

Om Ans = vbYes Then GoTo TryAgain

Koden fungerar inte korrekt om du använder GoTo istället för Fortsätt. För att visa, ange ett negativt tal. Du får felmeddelandet. Klicka på Ja för att försöka igen och ange sedan ett annat negativt tal. Det här andra felet är inte fastnat eftersom det ursprungliga felet inte var rensat.

Felhantering i ett nötskal

För att hjälpa dig att hålla hela den här felhanteringsaffären rakt, här är en snabb och smutsig sammanfattning. Ett block med felhanteringskod har följande egenskaper:

  • Den börjar omedelbart efter etiketten som anges i felmeddelandet.

  • Det bör endast nås med ditt makro om ett fel uppstår. Det innebär att du måste använda ett uttalande som Exit Sub eller Exit Function direkt före etiketten.

  • Det kan kräva ett CV-uttalande. Om du väljer att inte avbryta proceduren när ett fel inträffar måste du utföra ett CV-meddelande 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å på felet fortsätt nästa uttalande kommer till spel.

Följande exempel loopar genom varje cell i det valda området och omvandlar värdet till dess kvadratrots. Denna procedur alstrar ett felmeddelande om någon cell i urvalet innehåller ett negativt tal eller en text:

Sub SelectionSqrt () Dimcell som Range If TypeName (Selection) <> "range", sedan Avsluta del för varje cell i markeringscell. Värde = Sqr (cellvärde) Nästa cell Slut Sub

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

Följande rutin uppnår detta genom att använda On Error Resume Next-satsen:

Sub SelectionSqrt () Dimelcell Som Område Om Typnamn (Urval) <> "Område" Då Avsluta Del Vid Fel Fortsätt Nästa För Varje Cell I Val cell. Värde = Sqr (cellvärde) Nästa cell Slut Sub

I allmänhet kan du använda ett On Error Resume Next-meddelande om du anser att felen är ofarlig eller oavsiktlig för din uppgift.

Hur man använder OnError-förklaringen i Excel 2016 VBA - dummies

Redaktörens val

Hur man redigerar bilder i Redigera snabbläge för Photoshop Elements 9 - dummies

Hur man redigerar bilder i Redigera snabbläge för Photoshop Elements 9 - dummies

I Photoshop Element, Redigera Snabbt läge är en uppskattad version av Redigera fullt läge som ger grundläggande fixverktyg tillsammans med några unika funktioner, till exempel en förhandsgranskning av bilden. Här är ett steg för steg arbetsflöde som du kan följa i Redigera snabbläge för att reparera dina foton: Välj ett eller flera foton i ...

Hur man redigerar i Photoshop Elements 10: s Snabb Fotoredigeringsläge - dummies

Hur man redigerar i Photoshop Elements 10: s Snabb Fotoredigeringsläge - dummies

Snabb Fotoredigering är en uppskattad version av Full Photo Edit-läge som bekvämt ger grundläggande fixeringsverktyg och kastar i några unika egenskaper, till exempel en förhandsgranskning av bilden. Här är ett steg för steg arbetsflöde som du kan följa i Quick Photo Edit-läget för att reparera dina foton:

Hur man förbättrar Photoshop Elements-bilder med Photo Effects - dummies

Hur man förbättrar Photoshop Elements-bilder med Photo Effects - dummies

Fotoeffekter i Photoshop Elements 11 fungerar som applicera filter; medan dialogrutan Filtreringsgalleri ger dig många alternativ för att tillämpa ett filter, ger den guidade panelen dig filtereffekter och tar dig genom steg för att justera ljusstyrka, ändra färgton och mättnad och göra andra justeringar för att perfekta resultatet. Du ...

Redaktörens val

Hur man tar bort bilder från din Canon EOS 7D Mark II - dummies

Hur man tar bort bilder från din Canon EOS 7D Mark II - dummies

När du granskar en bild, bestämmer du om det är en målvakt. Om du tittar på en bild på din Canon EOS 7D Mark II, gillar du inte bilden av någon anledning kan du radera det. Men borttagning av bilder måste ske med stor försiktighet eftersom uppgiften inte kan ångras. När du har raderat en ...

Hur man redigerar filmer på en Canon EOS 60D - dummies

Hur man redigerar filmer på en Canon EOS 60D - dummies

60D Edit-funktionen gör det härligt enkelt för att ta bort oönskade delar från början eller slutet av en film direkt på din kamera. Denna ombordredigering är praktisk men grundläggande, så förvänta dig inte mirakel. Här är de enkla stegen för att trimma början eller slutet på en film: Klicka på ikonen Redigera (det ser ut ...

Redaktörens val

Hur man arbetar med text i ett Word 2010-tabell - dummies

Hur man arbetar med text i ett Word 2010-tabell - dummies

Text hinner i ett bord i Word 2010 på en cell-vid-cell basis. Varje cell i ett Word-bord kan ha ett eget styckeformat och en egen uppsättning flikar. Grupper av celler, rader och kolumner och hela tabellen kan väljas och formateras samtidigt, om du vill. All standardtext ...

Hur man arbetar med Word 2010: s decimala flik - dummies

Hur man arbetar med Word 2010: s decimala flik - dummies

Du kan använda decimalfliken i Word 2010 till rad upp kolumner av siffror. Även om du kan använda en rätt flik för att göra detta jobb är decimalfliken ett bättre val. I stället för högerjusterad text, som den högra fliken gör, justerar decimalfliken siffror efter deras decimaldel - perioden i ...

Hur man arbetar med flera Word 2010-dokument på samma gång - dummies

Hur man arbetar med flera Word 2010-dokument på samma gång - dummies

O saker Word 2010 kan göra med dokument! Du kan öppna flera Word-dokument samtidigt och arbeta på mycket av dem, växla mellan de olika öppna dokumenten. Öppnar flera Word-dokument samtidigt Det är inte en fråga om hur Word kan fungera på mer än ett dokument åt gången. Nej, ...