VBA – Fehler auslösen – Err.Raise – Benutzerdefinierte Fehlermeldung
In this Article
In diesem Tutorial zeigen wir Ihnen, wie Sie einen benutzerdefinierten Fehler in VBA auslösen können.
Benutzerdefinierte Fehler können in VBA-Code erstellt werden, wenn der Programmierer eine bestimmte Meldung an den Benutzer zurückgeben möchte, anstatt sich auf das Standard-Fehlermeldungsfeld zu verlassen, das angezeigt wird, oder wenn der Benutzer tatsächlich einen benutzerdefinierten Fehler anzeigen möchte, wenn ein bestimmter Wert in eine Variable oder Variablen im Code eingegeben wird.
Eine einfache benutzerdefinierte Fehlermeldung erstellen
Die Err. Raise-Methode ermöglicht es uns, die Fehlernummer und die Fehlerbeschreibung in unserem Code anzupassen.
Sub FehlerAusloesenTest()
On Error GoTo eh
If Range("A1") <> "Fred" Then
Err.Raise vbObjectError + 1000, , "Der Text in Zelle A1 sollte Fred lauten."
End If
Exit Sub
eh:
MsgBox "Benutzerfehler: " & Err.Description
End Sub
Wir müssen eine benutzerdefinierte Fehlernummer auslösen, die wir selbst dokumentiert haben. Wir verwenden die Konstante vbObjectError zusätzlich zu unserer benutzerdefinierten Nummer, um sicherzustellen, dass wir keine der von VBA für den internen Gebrauch reservierten Fehlernummern verwenden.
Eine benutzerdefinierte Fehlermeldung in Abhängigkeit von der Benutzereingabe erstellen
Wir können einen Fehler auslösen, der eine bestimmte Meldung zurückgibt – je nachdem, welche Informationen in den Code eingegeben werden.
Zunächst können wir diese Funktion erstellen:
Function BenutzerdefinierterFehlerTest(x As Integer, y As Integer)
If y - x > 50 Then
Err.Raise vbObjectError + 50, "in meiner Arbeitsmappe", "Die Differenz ist zu gering"
ElseIf y - x < 50 Then
Err.Raise vbObjectError - 55, "in meiner Arbeitsmappe", "Die Differenz ist zu groß"
End If
End Function
Dann können wir diesen Code erstellen, um die Funktion zu testen:
Sub TestErrRaise()
On Error GoTo eh
BenutzerdefinierterFehlerTest 49, 100
Exit Sub
eh:
MsgBox ("Benutzerfehler: " & vbCrLf & Err.Description & vbCrLf & Err.Source)
End Sub
Da die Differenz zwischen den Zahlen 49 und 100 größer als 50 ist, wird die benutzerdefinierte Fehlerbeschreibung „Die Differenz ist zu groß“ lauten.
Wenn wir diese Zeile im Code ändern:
BenutzerdefinierterFehlerTest 55, 100
Dann wird die benutzerdefinierte Fehlerbeschreibung „Die Differenz ist zu klein“ lauten.
Wenn wir dann die Code-Zeile so ändern, um Folgendes zu lesen:
BenutzerdefinierterFehlerTest 50, 100
Dann wird die Funktion BenutzerdefinierterFehlerTest keinen Fehler zurückgeben.
Die Excel-Fehlermeldung durch eine benutzerdefinierte Meldung ersetzen
Sie können vorhandene Excel-Fehler verwenden, um Ihre eigene benutzerdefinierte Meldung, die an den Benutzer zurückgegeben wird, zu erstellen.
Nehmen Sie das Beispiel des folgenden Codes:
Sub BenutzerdefinierteMeldung()
Dim x As Integer, y As Integer
x = 100
y = 0
MsgBox x / y
End Sub
Dies führt dazu, dass der folgende Fehler zurückgegeben wird:
Wir können jedoch die Meldung „Division durch Null“ anpassen, indem wir den Code wie im folgenden Beispiel abändern:
Sub BenutzerdefinierteMeldung()
On Error GoTo eh
Dim x As Integer, y As Integer
x = 100
y = 0
MsgBox x / y
Exit Sub
eh:
Err.Raise Err.Number, , "Sie können nicht durch Null dividieren - bitte korrigieren Sie Ihre Zahlen!"
End Sub