Excel VBA Exit Sub Procedure
Exit Sub- uttalande avslutar delproceduren tidigare än de definierade raderna i VBA-koder. För att lämna underproceduren 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 '… Exit Sub' Avsluta Sub utan att köra ytterligare kodrader nedan '…' Den här koden ignoreras '…
Exempel
Exempel 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 kommer att infoga 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 lämna suben.
Jag måste lägga till det logiska testet i Excel som om k = 6 och sedan avsluta sub .
Koda:
Sub Exit_Example1 () Dim k As Long For k = 1 To 10 If k = 6 Exit Sub 'Så snart k-värdet blir 6 ignorerar alla koder och avslutar celler (k, 1). Värde = k Next 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 köras 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 på 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 går det bara hela underproceduren.

Som vi kan se har det markerat ordet "Exit Sub." När du trycker på F8-tangenten kommer den att lämna underproceduren utan att gå till ordet "Avsluta sub."
Exempel # 2 - Vid fel Avsluta underproceduren
Vi kan också avsluta underproceduren när vi får felvärdena. Tänk till exempel på 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 As Long For k = 2 To 9 On Error Gå till ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: Exit Sub Avsluta sub

I exemplet ovan 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 varumärket som
ErrorHandler: Avsluta sub
Så snart kod stöter på ett fel kommer den att trycka på koden för att hoppa till etiketten, och varumärket har "Exit Sub" -uttrycket så att det kommer att lämna underproceduren.
Nu ska jag 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 underproceduren. Utan att informera användaren om att lämna underproceduren är alltid en farlig sak. För att meddela 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 ErrorHandlerceller (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next 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. Om ett fel inträffar under körning av koden kommer meddelandefältet att visas i VBA som nedan.

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