Gepolsterte Parameter

Fehlerbehandlung innerhalb von VBA

Natürlich verändert sich mit diesem minimalen Code bestenfalls die erscheinende Fehlermeldung, wenn das Formular nicht geöffnet ist. Aber Sie haben nun alle Möglichkeiten der Fehlerbehandlung innerhalb von VBA, wie in Listing 7 gezeigt.

Function HoleKundenCode() As String
On Error Resume Next
HoleKundenCode = Forms("frmPopUp").cmbKundenCode.Value
If HoleKundenCode = "" Then
HoleKundenCode = DLookup("[Kunden-Code]", "Bestellungen")
End If
If Err.Number <> 0 Then
MsgBox "Fehler Nr. " & Err.Number & ": " & _
Err.Description & vbCrLf & vbCrLf & _
"Zufälliger erster Kunden-Code '" & HoleKundenCode & _
"' wird eingesetzt!", vbCritical
End If
End Function

Sie bemerken also rechtzeitig den Fehler, der auftritt, wenn das Formular nicht geöffnet ist, oder in der Combobox keine Auswahl getroffen wurde. Dann können Sie wahlweise den ersten Kunden-Code mit DLookUp() nachladen, damit überhaupt ein Ergebnis angezeigt werden kann.

Oder Sie stoppen die gesamte Ausführung der Abfrage mit dem End-Befehl (Listing 8). Leider ist es nicht möglich, in dieser Funktion das offensichtlich nur fehlende Formular noch schnell zu öffnen. Access scheint das beim gleichzeitig stattfindenden Öffnen einer Abfrage nicht zuzulassen.

Function HoleKundenCode() As String
' ...wie bisher
If Err.Number <> 0 Then
MsgBox "Fehler Nr. " & Err.Number & ": " & _
Err.Description & vbCrLf & vbCrLf & _
"Abfrage wird nicht ausgeführt!", vbCritical
End
End If
End Function