VBA-Fehler beim Ignorieren

In diesem Tutorial wird gezeigt, wie Sie sicherstellen können, dass VBA beim Ausführen Ihres Codes einen Fehler ignoriert.

Wenn Sie VBA-Code erstellen, möchten Sie manchmal, dass VBA eine Codezeile ignoriert, wenn ein Fehler auftritt. Dies kann tatsächlich sehr nützlich sein, wenn Sie beispielsweise ein Blatt löschen möchten, wenn es vorhanden ist, diese Codezeile jedoch ignorieren möchten, wenn das Blatt nicht vorhanden ist.

(Weitere Informationen zu VBA-Fehlern finden Sie in unserem Fehlerbehandlungshandbuch.)

Bei Fehler Fortsetzen als nächstes

Um eine Codezeile in einer Prozedur zu ignorieren, verwenden wir das Bei Fehler Fortsetzen als nächstes Stellungnahme.

123456 Unter TestErrorIgnore()Bei Fehler Fortsetzen als nächstesActiveWorkbook.Sheets("Sheet4").selectActiveSheet.Löschen'mehr Code hierEnd Sub

Im obigen Beispiel ist an Bei Fehler Fortsetzen als nächstes Die Anweisung steht an der Spitze des Verfahrens. Der Code wird dann erstellt, um Sheet4 auszuwählen und dann zu löschen.

Aufgrund der Bei Fehler Fortsetzen als nächstes -Anweisung, wenn der Code Sheet4 nicht findet, fährt er einfach mit der nächsten Zeile fort und löscht das aktive Blatt, das es findet.

Dies kann sehr gefährlich sein, wenn Sie nur Blatt 4 löschen wollten und nicht nur das Blatt, das aktiv ist. Um diesen Fehler zu vermeiden, können wir eine Variable auf Blatt 4 setzen und nur dieses Blatt löschen, WENN es existiert.

1234567 Unter TestErrorIgnore()Dim ws als ArbeitsblattBei Fehler Fortsetzen als nächstesSet ws = ActiveWorkbook.Sheets("Sheet4")ws.Löschen'mehr Code hierEnd Sub

Wenn der Code jetzt ausgeführt wird, wird nur Sheet4 gelöscht WENN Sheet4 existiert tatsächlich. Wenn Blatt 4 nicht vorhanden ist, ignoriert VBA den Fehler und fährt fort.

Ein weiteres Beispiel hierfür ist, wenn Sie alle Blätter mit einer Schleife aus Ihrer Arbeitsmappe löschen möchten. Da eine Excel-Arbeitsmappe mindestens ein Blatt haben muss, löscht der Code alle Blätter außer einem.

123456 Sub DeleteSheets()Dim ws als ArbeitsblattFür jedes ws in ActiveWorkbook.Sheetsws.LöschenNächstes wsEnd Sub

Der obige Code wird mit einem Fehler beendet.

Klicken Debuggen bringt uns in den Code mit hervorgehobener Zeile!

Das Hinzufügen von Bei Fehler Fortsetzen als nächstes Zeile in den Code verhindert den Fehler und die Routine lässt immer ein Blatt in der Arbeitsmappe.

12345678 Sub DeleteSheets()'Fehlerzeile hier hinzufügenBei Fehler Fortsetzen als nächstesDim ws als ArbeitsblattFür jedes ws in ActiveWorkbook.Sheetsws.LöschenNächstes wsEnd Sub

Bei Fehler GoTo 0

Oft, wenn Sie verwenden Bei Fehler Fortsetzen als nächstes um einen Fehler zu ignorieren, möchten Sie, dass später im Code Fehler abgefangen werden, oder Sie möchten, dass Ihr Code nicht mehr ausgeführt wird, wenn in Zukunft ein Fehler auftritt. Wir können die Fehlerbehandlung so zurücksetzen, dass der Code bei Fehlern wieder abbricht, indem wir die Zeile On Error GoTo 0 hinzufügen.

12345678 Unter TestErrorIgnore()Dim ws als ArbeitsblattBei Fehler Fortsetzen als nächstesSet ws = ActiveWorkbook.Sheets("Sheet4")ws.LöschenBei Fehler GoTo 0'mehr Code hierEnd Sub

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave