Excel VBA-felhantering

Felhantering är en mycket användbar och betydande mekanism för programmeringsspråk som VBA. Felkontroll eller förebyggande är en aspekt av felhantering vilket innebär att du tar effektiva och betydande åtgärder i ett VBA-skript för att undvika att ett pop-up-meddelande inträffar

Olika typer av fel i VBA

  1. Syntaxfel eller parsningsfel
  2. Kompilering eller kompilationsfel
  3. Runtime Error
  4. Logiskt fel

Ovanstående fel kan korrigeras med hjälp av nedan nämnda felsökning och olika "On Error" -förklaringar som är infogade mellan en kod.

Vid fel Återuppta nästa

Vid fel Goto 0

Vid fel Goto

Vid fel gick -1

VBA-felhantering med hjälp av olika uttalanden "ON ERROR"

Du kan ladda ner denna VBA-felhantering av Excel-mall här - VBA-felhantering av Excel-mall

Exempel 1 - VBA-kompileringsfel

Om det finns ett fel i ett uttalande eller syntax för VBA-kod, när du felaktigt skriver en kod, kommer den att markeras med röd färg beroende på inställningsalternativ i verktyg (Om du har valt Automatisk syntaxkontroll).

En popup-meddelanderuta med kompileringsfel visas när du kör koden med fel syntax.

Koda:

 Sub SYNTAX_ERROR () MsgBox detta är mitt första program End Sub 

“COMPILE ERROR: VARIABLE NOT DEFINED” är det vanligaste felet som visas som ett popup-meddelande. när referensvariabeln inte är definierad uppstår detta fel.

Koda:

 Sub VBA_FORMAT1 () A = 19049.83 A = Format (A, "STANDARD") MsgBox A End Sub 

I exemplet ovan har jag inte deklarerat variabeltypen som sträng, detta fel inträffar. Så jag måste förklara en variabel som Dim A som sträng.

Koda:

 Sub VBA_FORMAT1 () Dim A As String A = 19049.83 A = Format (A, "STANDARD") MsgBox A End Sub 

Exempel 2 - VBA Runtime Error

När en omöjlig matematiska uttalanden eller termer finns i ett uttalande inträffar detta runtime-fel.

Koda:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Exempel 3 - VBA-logiska fel eller fel

Dessa fel är mycket svåra att spåra, varken kommer att bli markerade eller pop-up-felmeddelande visas. det kommer att resultera i oväntade åtgärder och felaktiga resultat.

Exempel: När två variabler finns i koden kan den innehålla en felaktig. I detta fall uppstår logiskt fel.

Hur kan man förhindra fel i VBA?

Låt oss kolla in hur man förhindrar ovanstående olika typer av fel i VBA Excel.

Steg 1: För att öppna ett VB Editor-fönster Välj eller klicka på Visual Basic i kodgruppen på fliken Utvecklare eller så kan du direkt klicka på Alt + F11- genvägstangenten.

Steg 2: För att skapa en tom modul högerklickar du på ark 1 (VB_ERROR HANDLING) under Microsoft Excel-objekt och sätter in modulen så att en ny tom modul skapas.

VBA-felhantering med felsökningsalternativ

Det är bättre att sammanställa kod innan vi kör den. För att följa sammanställningen måste stegen nedan följas. I verktygsfältet VB-menyn, under felsökningsalternativet, måste vi välja ett kompilera VBA-projekt. När du klickar på den, kontrollerar den koden steg för steg, när den hittar felet kommer den att markera det och popup-meddelandet visas, därmed måste du korrigera det. när det har korrigerats måste du kompilera för att hitta nästa fel i koden.

Obs: Med hjälp av kompileringsalternativet kan vi bara korrigera kompilerings- och syntaxfelet.

VBA-felhantering med hjälp av olika uttalanden "ON ERROR"

1. Vid felupptagning Nästa

Här ignoreras felet och koden fortsätter.

I det nedan nämnda exemplet kan 6 inte delas med noll, om du kör det utan att ange On Error Resume Next statement, uppstår nedanstående runtime-fel.

Koda:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Om On Error Resume Next anges längst upp i koden efter Sub-sats, ignorerar det körtidfel och går vidare till nästa påstående, vilket resulterar i utdata från 6/2 dvs. 3 (popup-meddelanderuta med resultat av det).

Koda:

 Sub RUNTIME_2 () Vid fel Återuppta nästa MsgBox 6/0 MsgBox 6/2 End Sub 

2. Vid fel GoTo 0 och Error GoTo -1

'On Error GoTo 0' kommer att stoppa koden på den specifika raden som orsakar felet och visar en meddelanderuta som beskriver eller indikerar felet.

Koda:

 Sub onError_Go_to_0 () Vid fel GoTo 0 Kill "C: TempFile.exe" Range ("A1"). Värde = 100 / "PETER" End Sub 

Vanligtvis visar det standardfelkontrollbeteende, det är betydelsefullt när det används tillsammans med "On Error Resume Next".

Vanligtvis kan du observera Runtime Error Message-rutan, innehåller alternativen "Fortsätt", "Slut", "Felsökning" och "Hjälp" . låt oss kolla användningen av var och en av dem.

  • Alternativet Fortsätt ignorerar undantaget och fortsätter koden om det är möjligt.
  • Slutalternativet avslutar programmet.
  • Felsökningsalternativ markerar påståendet där felet har inträffat. vilket hjälper dig att felsöka eller korrigera koden.
  • Hjälpalternativet tar dig att öppna Microsofts MSDN-hjälpsida.

Vid fel GoTo 0 med On Error Resume Next

Koda:

 Sub onError_Go_to_0_with_Resume_next () On Error Resume Next Kill "C: TempFile.exe" On Error GoTo 0 Range ("A1"). Value = 100 / "PETER" End Sub 

I ovanstående kod ignorerar den fel tills den når uttalande om GoTo 0 på fel. Efter uttalandet GoTo 0 på On Error går koden tillbaka eller fortsätter till normal felkontroll och utlöser det förväntade felet framåt. När jag kör ovanstående kod kommer det att visa uppdelningsfelet, dvs typfelsteg (numeriskt värde kan inte delas med text).

På fel GoTo 0 inaktiverar alla felsökningar som för närvarande finns i VBA-koden, dvs. stäng av felhanteringen i huvudkoden medan On Error GoTo -1 rensar felhanteringen och ställer in den till ingenting som hjälper eller låter dig skapa en annan fällfälla.

3. Vid fel GoTo <LABEL

VBA för att överföra programstyrningen till linjen följt av etiketten om några runtime-fel uppstår, dvs kod hoppar till den specificerade etiketten. Här kommer kodsatserna mellan undantagslinjen och etiketten inte att köras.

Denna metod är mer lämpad och betydande för att lämna programmet graciöst om något större dödligt fel inträffar under exekveringen.

I den nedan nämnda VBA-koden så snart felet inträffar på rad 3 överför programmet kontrollen till raden 6, dvs. etiketten (popup-meddelandet visas som ”Undantagshanterare” )

Koda:

 Sub OnError_Go_to_Label () On Error GoTo Error_handler: MsgBox 9/0 MsgBox "Den här raden kommer inte att köras" Exit Sub Error_handler: MsgBox "undantagshanterare" End Sub 

Här kan du lägga märke till att 'Exit Sub' ska användas strax före etiketten 'Error_handler:', detta görs för att säkerställa att felhanteringsblocket med kod ska stoppas eller inte körs om det inte finns något fel. Nu kan du spara din arbetsbok som en "Excel-makroaktiverad arbetsbok". Genom att klicka på spara som i det vänstra hörnet av kalkylbladet.

Återigen om du öppnar en fil kan du klicka på genvägsknappen, dvs. Fn + Alt + f8, "Makro" -dialogrutan visas, där du kan köra en sparad makrokod som du väljer eller du kan klicka på Fn + Alt + F11 för ett fullt makrofönster.

Saker att komma ihåg

  • Innan du skriver kod måste du säkerställa att brytning av obehandlade fel kontrolleras eller valts av fel. fångstalternativ i allmänhet i verktygets alternativ i VBA-verktygsfältet.
  • Det är en standardinställning som hjälper till att stoppa din kod för fel som inte hanteras.
  • Break on All Error: Det kommer att stoppa din kod för alla typer av fel.
  • Inbyggd klassmodul: Om ett objekt som användarform används i koden, kommer det att markera att den exakta raden som orsakar felet.

Rekommenderade artiklar

Detta är en guide till VBA-felhantering. Här diskuterar vi hur man använder VBA-felhantering i Excel tillsammans med några praktiska exempel och nedladdningsbar Excel-mall. Du kan också gå igenom våra andra föreslagna artiklar -

  1. VBA Declare Array (exempel)
  2. VBA på fel
  3. VBA Unprotect Sheet
  4. VBA-kolumner | Excel-mallar
  5. VBA Environ

Kategori: