VBA – Fehler auslösen – Err.Raise – Benutzerdefinierte Fehlermeldung

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on März 31, 2023

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:

laufzeitfehler division durch null

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

vba laufzeitfehler benutzerdefinierte meldung

vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples