Excel VBA vid felupptagning Nästa
Felhantering är en mycket användbar och betydande mekanism för programmeringsspråk som VBA Felkontroll eller förebyggande, vilket är en aspekt av Felhantering som innebär att man tar effektiva och betydande åtgärder i ett VBA-skript för att undvika förekomst av felmeddelande. Excel-VBA vid felupptagning Nästa uttalande ignorerar kodraden som orsakar ett fel och fortsätter eller leder körning till nästa rad efter den rad som orsakade felet.
OBS: Vid felupptagning Nästa uttalande fixar inte runtime-fel, det är ett fel som ignorerar var VB-programkörningen kommer att fortsätta från den linje som har orsakat runtime-felet.I grund och botten används Återuppta nästa när du vill ignorera felet och fortsätta eller återuppta kodutförandet till nästa cell.
Typer av fel i VBA
Nedan finns de olika typerna av fel i VBA:
- Syntaxfel eller parsningsfel.
- Kompilering eller kompilationsfel.
- Runtime Error.
- Logiskt fel.
Ovanstående fel kan åtgärdas med hjälp av felsökning & "On Error" -förklaringar i en kod. Runtime-felet kan förhindras med hjälp av On Error Resume Next.
VBA Runtime Error:
Innan förklaringen om On Error Resume Next bör du vara medveten om runtime-fel när omöjliga matematiska uttalanden eller termer finns i ett uttalande, då uppstår detta runtime-fel.
Exempel på Excel VBA vid felupptagning Nästa
Nedan finns de olika exemplen på On Error Resume Next i Excel VBA:
Du kan ladda ner denna VBA vid fel Återuppta nästa Excel-mall här - VBA vid fel Återuppta nästa Excel-mallVBA vid felupptagning nästa - exempel # 1
Här ignoreras ett fel och körningen av 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 Vid fel återupptas nästa in i koden överst efter SUB-uttalande, ignorerar det körtidfel och går vidare till nästa uttalande, resulterar i en utgång på 6/2 (popup-meddelanderuta med resultat av det).
Koda:
Sub RUNTIME_2 () Vid fel Återuppta nästa MsgBox 6/0 MsgBox 6/2 End Sub
VBA vid felupptagning Nästa - Exempel # 2
Jag kan använda On Error Resume Next var som helst i koden från början till slut. I nedanstående exempel måste jag göra en 3-beräkning, dvs.
9/3 =?
9/0 =?
9/2 =?
I ovanstående exempel kan du observera en andra beräkning där valfritt antal inte kan delas med noll, dvs 9 inte kan delas med noll i det andra steget. Antag att om du kör makro utan att ange On Error Resume Next statement, nu kan jag köra koden steg för steg med hjälp av steg in eller F8-tangenten för att förstå hur det fungerar.
Nu kör jag ovanstående kod, genom att klicka på steg till alternativet eller F8-tangenten ofta, steg för steg. Jag kopierar bara ovanstående kod och börjar köra den steg för steg, för det första steget i beräkningsmeddelanden ruta 3 visas.
Koda:
Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub
När jag kör den andra kodraden inträffar då nedanstående runtime-fel i det andra steget i en kod, där valfritt nummer inte kan delas med noll, dvs. 9 kan inte delas med noll i det andra steget.
Koda:
Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub
Nu, om jag till och med klickar på felsökning, kan det inte gå vidare, där det tar mig till den andra kodraden (den blir markerad med gul färg), där jag behöver göra korrigeringen. Så här, om ytterligare klickar på alternativet Step Into eller F8, kommer den tredje beräkningen i den här koden inte att köras.
För att åtgärda eller hantera detta runtime-fel måste jag använda eller utföra OnError Resume Next- uttalandet ovanför en andra kod eller i början av koden under substatementet. så att den hoppar över den raden i koden och går vidare till det tredje steget i koden och beräknar värdet.
Koda:
Sub RUNTIME_30 () MsgBox 9/3 On Error Resume Next MsgBox 9/0 MsgBox 9/2 End Sub
ELLER
Sub RUNTIME_31 () Vid fel Återuppta nästa MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub
Nu har jag lagt till vid felupptagning nästa uttalande till koden, där du kan använda vilken som helst av ovanstående kod, om du kör den steg för steg får du en popup med två meddelanden, en är den första koden och den tredje koden beräkning. Vid felupptagning Nästa kommer att ignorera runtime-felet i den andra koden och gå vidare till den tredje koden.
VBA vid felupptagning Nästa - Exempel # 2
Vi kommer nu att se Kombinationen av Återuppta fel igen med fel GoTo 0. I koden nedan 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.
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
När jag kör ovanstående kod kommer det att visa uppdelningsfelet, dvs Typmatchning (numeriskt värde kan inte delas med text).
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.
när du öppnar denna excel-fil igen kan du använda nedanstående genvägstangent, dvs.
Funktion + Alt + F11 genvägstangent hjälper dig att komma åt alla skapade makrokoder i arbetsboken. Funktion + Alt + F8 genvägstangent hjälper dig att öppna ett "makro" -dialogruta som innehåller alla makronamn, där du kan köra en specifik makrokod du väljer.
Saker att komma ihåg
- Körningstiden fångas tyst och lagras i det globala Err-objektet
- Vid fel Resume Next förhindrar vanligtvis ett avbrott i körning av kod.
- Felobjektegenskaper (Err Object) rensas automatiskt när Resume Next används i en felhanteringsrutin
Rekommenderade artiklar
Detta är en guide till VBA vid felupptagning Nästa. Här diskuterar vi olika typer av fel i VBA Excel tillsammans med några praktiska exempel och nedladdningsbar Excel-mall. Du kan också gå igenom våra andra föreslagna artiklar -
- Komplett guide till VBA-makron
- VBA DateDiff (exempel med Excel-mall)
- Hur använder man målsökning i VBA?
- VBA Protect Sheet with Syntax
- VBA Environ