VBA Exit Sub

Excel VBA Exit Sub Procedure

Exit Sub- uttalande avslutar delproceduren tidigare än de definierade raderna i VBA-koder. För att avsluta underprocessen måste vi dock använda någon form av logiskt test.

Låt oss konstruera detta i enkla termer.

 Sub MacroName () '...' Någon kod här '... Avsluta Sub' Avsluta Sub utan att köra ytterligare kodrader nedan '...' Denna kod kommer att ignoreras '... Avsluta Sub 

Exempel

Du kan ladda ner denna VBA Exit Sub Excel-mall här - VBA Exit Sub Excel-mall

Exempel nr 1

För ett bättre exempel, se nedanstående kod.

Koda:

 Sub Exit_Example1 () Dim k så länge för k = 1 till 10 celler (k, 1). Värde = k Nästa k End Sub 

Ovanstående kod infogar serienummer från 1 till 10 i cellerna A1 till A10.

Nu vill jag bara infoga 5 serienummer och så snart värdet på variabeln “k” blir 6 vill jag avsluta suben.

För detta måste jag lägga till det logiska testet i Excel som IF k = 6 Sedan avsluta Sub .

Koda:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 If k = 6 Then Exit Sub 'Så snart k-värdet blir 6 kommer det att ignorera alla koder och avsluta celler (k, 1). Värde = k Nästa k End Sub 

Kör nu koden rad för rad. Tryck på F8-tangenten för att starta förfarandet.

Från och med nu är k-värdet noll.

För att ändra k-värdet till 1, tryck på F8-tangenten en gång till.

Så k-värdet är 1, vår kod fortsätter att gå och infogar 1 i cellen A1. Så här fortsätter du att köra slingan tills värdet på k blir 6.

Nu är värdet k 6 och kodraden håller på att utföra vårt logiska test för att avsluta underprocessen. Om jag trycker på F8-tangenten en gång till kommer det bara att avsluta hela subproceduren.

Som vi kan se har det markerat ordet “Exit Sub” . När du trycker på F8-tangenten kommer den att lämna underprocessen utan att gå till ordet “End Sub” .

Exempel # 2 - Vid fel Avsluta underproceduren

Vi kan också avsluta underproceduren när vi får felvärdena. Tänk till exempel nedanstående data för att dela nummer 1 från nummer 2.

Nedan är koden för att få uppdelningen av två siffror.

Koda:

 Sub Exit_Example2 () Dim k As Long For k = 2 To 9 Cells (k, 3). Value = Cells (k, 1). Value / Cells (k, 2). Value Next k End Sub 

Som vi vet kan vi inte dela något tal med noll. Så om vi försöker göra det får vi felet som Run Time Error '11': Division By Zero.

För att undvika detta så snart vi stöter på något fel kommer jag att nämna mitt makro för att avsluta underprocessen med omedelbar effekt. Nedanstående kod är ett sådant fall.

Koda:

 Sub Exit_Example2 () Dim k så länge för k = 2 till 9 vid fel Gå till ErrorHandler-celler (k, 3) .Värde = Cells (k, 1) .Värde / celler (k, 2) .Värde Nästa k ErrorHandler: Avsluta sub Avsluta sub 

I ovanstående exempel har jag nämnt uttalandet ”On Error Goto ErrorHandler”. Här är ordet ErrorHandler den etikett jag har tilldelat. Om du kan se längst ner i koden har jag nämnt etiketten som

ErrorHandler: Avsluta sub 

Så snart koden stöter på ett fel kommer den att trycka på koden för att hoppa till etiketten och etiketten har "Exit Sub" -uttalande, så kommer att avsluta underproceduren.

Nu kommer jag att köra koden, den kommer att beräkna uppdelningen tills den hittar ett fel.

Som du kan se i cellen C7 har det stött på ett fel som "Division by Zero" så det har lämnat delproceduren. Utan att informera användaren om att lämna underproceduren är alltid en farlig sak. För att informera användaren om felet kan vi inkludera en liten meddelanderuta.

Koda:

 Sub Exit_Example2 () Dim k så länge för k = 2 till 9 vid fel Gå till ErrorHandler-celler (k, 3) .Värde = celler (k, 1) .Värde / celler (k, 2) .Värde Nästa k ErrorHandler: MsgBox " Fel har uppstått och felet är: "& vbNewLine & Err.Description Exit Sub End Sub 

Ovanstående kod visar felmeddelandet och avslutar sedan underproceduren. När du kör kod om ett fel uppstår kommer meddelandefältet att visas i VBA som nedan.

Detta är mer av ett tillförlitligt sätt att lämna underförfarandet.