/ / Fehlerbehandlung in Excel VBA

Fehlerbehandlung in Excel VBA

Im Folgenden werden wir zwei Programme in Excel VBA. Ein Programm einfach ignoriert Fehler. Das andere Programm setzt die Ausführung an einer angegebenen Zeile fort wenn ein Fehler auftritt.

Situation:

Beide Programme berechnen die Quadratwurzel der Zahlen.

Fehlerbehandlung in Excel VBA

Quadratwurzel 1

Fügen Sie der Befehlsschaltfläche "Square Root 1" die folgenden Codezeilen hinzu.

1. Zuerst deklarieren wir zwei Range-Objekte. Wir nennen die Range-Objekte rng und cell.

Dim rng As Range, cell As Range

2. Wir initialisieren das Range Objekt Rng mit dem ausgewählten Bereich.

Set rng = Selection

3. Wir wollen die Quadratwurzel jeder Zelle in einem zufällig ausgewählten Bereich berechnen (dieser Bereich kann beliebig groß sein). In Excel VBA können Sie dafür die For Each Next-Schleife verwenden. Fügen Sie die folgenden Codezeilen hinzu:

For Each cell In rng

Next cell

Hinweis: Rng und Zelle werden hier zufällig ausgewählt, Sie können beliebige Namen verwenden. Denken Sie daran, im Rest Ihres Codes auf diese Namen zu verweisen.

4. Fügen Sie der Schleife die folgende Codezeile hinzu.

On Error Resume Next

5. Als nächstes berechnen wir die Quadratwurzel eines Wertes. In Excel VBA können wir die Sqr-Funktion dafür verwenden. Fügen Sie der Schleife die folgende Codezeile hinzu.

cell.Value = Sqr(cell.Value)

6. Beenden Sie den Visual Basic-Editor, und testen Sie das Programm.

Ergebnis:

Bei Fehler Fortsetzen Nächstes Ergebnis

Fazit: Excel VBA hat Zellen mit ungültigen Werten wie negativen Zahlen und Text ignoriert. Ohne die Anweisung "On Error Resume Next" würden Sie zwei Fehler erhalten. Achten Sie darauf, die Anweisung "On Error Resume Next" nur zu verwenden, wenn Sie sicher sind, dass Fehler ignoriert werden.

Quadratwurzel 2

Fügen Sie der Befehlsschaltfläche "Square Root 2" die folgenden Codezeilen hinzu.

1. Das gleiche Programm wie Square Root 1, aber ersetzen "On Error Resume Next" mit:

On Error GoTo InvalidValue:

Hinweis: InvalidValue wird hier zufällig ausgewählt, Sie können einen beliebigen Namen verwenden. Denken Sie daran, im Rest Ihres Codes auf diesen Namen zu verweisen.

2. Fügen Sie außerhalb der For-for-Next-Schleife zuerst die folgende Codezeile hinzu:

Exit Sub

Ohne diese Zeile wird der Rest des Codes (Fehlercode) ausgeführt, auch wenn kein Fehler vorliegt!

3. Excel VBA setzt die Ausführung an der Zeile fort, die mit "InvalidValue:" beginnt, wenn ein Fehler auftritt (den Doppelpunkt nicht vergessen). Fügen Sie die folgende Codezeile hinzu:

InvalidValue:

4. Wir behalten unseren Fehlercode für jetzt einfach. Wir zeigen eine MsgBox mit Text und der Adresse der Zelle an, in der der Fehler aufgetreten ist.

MsgBox "can"t calculate square root at cell " & cell.Address

5. Fügen Sie die folgende Zeile hinzu, um Excel VBA anzuweisen, die Ausführung nach dem Ausführen des Fehlercodes fortzusetzen.

Resume Next

6. Beenden Sie den Visual Basic-Editor, und testen Sie das Programm.

Ergebnis:

Bei Fehler GoTo Ergebnis

Bei Fehler GoTo Ergebnis

Bei Fehler GoTo Ergebnis

Lesen Sie auch: