„Excel VBA Exit Sub“ procedūra
„Exit Sub“ sakinys baigia antrinę procedūrą anksčiau nei apibrėžtos VBA kodų eilutės. Tačiau norėdami išeiti iš subprocedūros turime taikyti tam tikrą loginį testą.
Sukonstruokime tai paprastai.
Sub MacroName () „…“ Kažkas kodas čia …… Exit Sub “Išeikite iš Sub, nevykdydami tolesnių kodo eilučių žemiau„… “Šis kodas bus ignoruojamas“
Pavyzdžiai
1 pavyzdys
Geresnio pavyzdžio ieškokite žemiau esančiame kode.
Kodas:
Sub Exit_Example1 () Dim k As Long For k = 1–10 langelių (k, 1). Vertė = k Kitas k End Sub

Aukščiau nurodytas kodas įterpia serijos numerius nuo 1 iki 10 langeliuose A1 – A10.

Dabar noriu įterpti tik 5 serijos numerius ir kai tik kintamojo „k“ vertė tampa 6, noriu išeiti iš antrinio.
Aš turės pridėti loginį testą Excel, kaip JEI k = 6 išeikite Sub .
Kodas:
Sub Exit_Example1 () Dim k As Long For k = 1-10 Jei k = 6, tada Exit Sub 'Kai tik k reikšmė taps 6, ji nepaisys visų kodų ir išeis iš langelių (k, 1). Vertė = k Kitas k End Sub

Dabar paleiskite kodą eilutėje. Norėdami pradėti procesą, paspauskite klavišą F8.

Nuo šiol k reikšmė lygi nuliui.

Norėdami pakeisti k reikšmę į 1, dar kartą paspauskite klavišą F8.

Taigi k reikšmė yra 1, mūsų kodas toliau veikia ir įterpia 1 į langelį A1. Taip tęsite ciklą, kol k reikšmė taps 6.

Dabar k reikšmė yra 6, o kodo eilutė ketina atlikti loginį testą, kad išeitumėte iš antrinės procedūros. Jei dar kartą paspausiu F8 klavišą, jis atliks visą antrinę procedūrą.

Kaip matome, jis paryškino žodį „Exit Sub“. Paspaudus klavišą F8, jis išeis iš subprocedūros nenueidamas prie žodžio „End Sub“.
2 pavyzdys - dėl klaidos išeikite iš antrinio proceso
Mes taip pat galime išeiti iš antrinės procedūros, kai gausime klaidų reikšmes. Pvz., Apsvarstykite toliau nurodytus duomenis, kaip padalinti skaičių1 iš skaičiaus 2.

Žemiau yra kodas, norint gauti dviejų skaičių padalijimą.
Kodas:
Sub Exit_Example2 () Dim k As Long For k = 2–9 langeliai (k, 3). Vertė = ląstelės (k, 1). Vertė / langeliai (k, 2). Vertė Kitas k End Sub

Kaip žinome, negalime nė vieno skaičiaus padalyti iš nulio. Taigi, jei bandysime tai padaryti, gausime klaidą kaip „Vykdymo laiko klaida„ 11 “: padalijimas pagal nulį.

Norėdami to išvengti, kai tik aptiksime kokių nors klaidų, paminėsiu savo makrokomandą, kad galėčiau nedelsiant išeiti iš antrinės procedūros. Žemiau pateiktas kodas yra vienas iš tokių atvejų.
Kodas:
Sub Exit_Example2 () Dim k As Long For k = 2 - 9 On Error GoTo ErrorHandler Cells (k, 3). Value = Cells (k, 1). Value / Cells (k, 2). Vertė Kitas k ErrorHandler: Exit Sub Pabaigos sub

Pirmiau pateiktame pavyzdyje paminėjau teiginį „On Error Goto ErrorHandler“. Čia žodis ErrorHandler yra mano priskirta etiketė. Jei matote kodo apačioje, aš paminėjau prekės ženklą kaip
„ErrorHandler“: išeikite iš sub
Kai tik kodas susidurs su klaida, jis paspaus kodą, kad pereitų prie etiketės, o prekės ženklas turi teiginį „Exit Sub“, kad išeitų iš antrinės procedūros.
Dabar aš paleisiu kodą; jis apskaičiuos padalijimą, kol ras klaidą.

Kaip matote langelyje C7, jame įvyko klaida „Padalijimas pagal nulį“, todėl jis išėjo iš antrinės procedūros. Neinformuoti vartotojo, išeinančio iš antrinės procedūros, visada yra pavojingas dalykas. Norėdami pranešti vartotojui apie klaidą, galime įtraukti vieną mažą pranešimų laukelį.
Kodas:
Sub Exit_Example2 () Dim k As Long For k = 2 - 9 On Error GoTo ErrorHandler Cells (k, 3). Value = Cells (k, 1). Value / Cells (k, 2). Value Next k ErrorHandler: MsgBox " Įvyko klaida ir klaida: "& vbNewLine & Err.Description Exit Sub End Sub Sub

Aukščiau pateiktas kodas parodys klaidos pranešimą, tada išeikite iš antrinės procedūros. Vykdant kodą, jei įvyksta klaida, jis rodys pranešimų laukelį VBA, kaip nurodyta toliau.

Tai labiau patikimas būdas atsisakyti antrinės procedūros.