VBA On Error Folytatás Következő vagy Goto 0

Ez az oktatóanyag elmagyarázza a VBA On Error Resume Next és a Goto Statement című részt.

Még ha a kódja tökéletesen felépített is, előfordulhat, hogy a felhasználó nem azt teszi, amit elvárna. Emiatt hibakezelőket kell beillesztenie a kódjába, valahányszor lehetséges, hogy hiba lép fel.

Hiba esetén Folytassa a következőt

Az On Error Resume Next utasítás azt mondja a VBA -nak, hogy hagyja ki a hibákat tartalmazó kódsorokat, és folytassa a következő sorral. A VBA figyelmen kívül hagyja a hibát tartalmazó sort vagy sorokat, és a következő kódsorra lép.

Ez akkor hasznos, ha a figyelmen kívül hagyható kódsor nem kritikus a makró sikeres futtatásához, de helytelen használat esetén meglehetősen veszélyes lehet, mivel nem szándékos eredményeket adhat.

Például az alábbi eljárásban:

123456 All HideAllSheets ()Dim ws munkalapkéntMinden ws -hez az ActiveWorkbook.Sheets -benws.Visible = HamisKövetkező wsEnd Sub

Ha ezt a kódot futtatjuk, hibaüzenetet kapunk, mivel nem tudjuk elrejteni a munkafüzet összes munkalapját - legalább egy munkafüzetnek láthatónak kell maradnia.

Ha azonban az alábbiak szerint módosítjuk az eljárást, a kód a hibán túl folytatódik, és a munkafüzet utolsó lapja látható marad.

1234567 All HideAllSheets ()Hiba esetén Folytassa a következőtDim ws munkalapkéntMinden ws -hez az ActiveWorkbook.Sheets -benws.Visible = HamisKövetkező wsEnd Sub

GoTo 0 hiba esetén

Ha nincs kódkezelő a kódunkban, Hiba: Goto 0 az Excel alapértelmezett beállítása. Ez alapvetően azt jelenti, hogy amikor hiba történik a GoTo 0 hiba esetén, A VBA leállítja a kódfuttatást, és megjeleníti a szokásos hibaüzenet -mezőt, például:

Ha olyan hibacsapdát tettünk, mint a Hiba esetén Folytassa a következőt kódunkban, de akkor vissza akarjuk állítani a hibát az alapértelmezettre, beilleszthetünk egy Hiba: Goto 0 sor a kódunkba.

12345678910 Sub ErrorGoTo0 ()Hiba esetén Folytassa a következőtDim ws munkalapkéntMinden ws -hez az ActiveWorkbook.Sheets -benws.Visible = HamisKövetkező wsGoTo 0 hiba esetén'Futtasson több kódot itt például:ActiveSheet.Name = "Lap1"End Sub

Most, ha hiba történt a kódunkban a Hiba: Goto 0 vonal, az Excel alapértelmezett hibaüzenete jelenik meg. Ebben a példában már van Sheet1 nevű lap az ActiveWorkbookban, mint a fenti kód Hiba: Goto 0 elrejti a lapot, de nem törli. Ekkor megjelenik az alapértelmezett Excel hibaüzenet, amely azt jelzi, hogy a munkalap neve már elkészült.

Hiba esetén lépjen ide Vonal

A kód használatával arra is kényszeríthetjük kódunkat, hogy egy másik kódsorba lépjen át Goto hiba Vonal amely azt mondja a VBA -nak, hogy hiba esetén egy adott kódsorra lépjen.

123456789101112 Sub ErrorGoToLine ()Hiba esetén Folytassa a következőtDim ws munkalapkéntMinden ws -hez az ActiveWorkbook.Sheets -benws.Visible = HamisKövetkező wsOn Error GoTo errhandlerActiveSheet.Name = "Lap1"Kilépés a Subbólhibakezelő:MsgBox ("Már létezik lap1!", VbCritical)End Sub

A fenti példában, amikor a kód megtalálja a „Sheet1” lapot, a kódkezelő címke alatti kódsorba kerül - ebben az esetben egy egyéni üzenetdobozt hív meg, amely tájékoztatja a felhasználókat, hogy a lap már kilép. A hibakezelő címkéje után kettőspontot kell elhelyezni, hogy a VBA jelezze, hogy címke.

1 hibakezelő:

A kód ezután leugrik a címke alatti sorra, és visszaadja az egyéni üzenetmezőt.

Ez akkor hasznos, ha nem szeretné, hogy felhasználója a Hibakeresés gombra kattintva beírja a kódot, mivel a szabványos Excel üzenet mindig lehetőséget ad a kód hibakeresésére.

Szükségünk van egy Kilépés a Subból az eljárásban. Ha van NEM a Sheet1 nevű munkalapot, akkor az a kódsor futna, és az aktív lapot Sheet1 -re nevezi át. Ezután azt akarjuk, hogy a kód véget érjen - nem akarjuk, hogy a hibakezelőhöz továbbítsa, és megjelenítse az üzenetdobozt. A Kilépés alsor ezután kilép az eljárásból és leállítja a kódot.

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave