VBA-Beispiel 132
mail schreiben
mail schreiben

Makro nach Fehler neu starten

Nach einem Fehler innerhalb dieser Prozedur, soll das Makro neu gestartet werden.

Beachten Sie den Gültigkeitsbereich der Variablen und die Entwicklung der Werte.
Um eine Endlosschleife zu vermeiden, sollte immer eine Obergrenze eingebaut sein. Prüfen Sie ggf. intFehler zu Beginn der Prozedur.

Bevor Sie dieses oder ein ähnliches Makro in Ihren Prozeduren einsetzen, sollten Sie es besonders gründlich testen.

'zu beachten:
'Sofern die Anweisung "End" auskommentiert ist,
'bleiben die Werte der Variablen y und intFehler auch nach
'Programmende erhalten und werden bei jedem weiteren Programmstart
'weiter raufgezählt.

Private y As Integer
Private intFehler As Integer
'

Public Sub VonVorn()
Dim i As Integer, intAntwort As Integer

  On Error GoTo Hell

  y = y + 3
  MsgBox "y = " & y, , ""

  i = 10 / 0  'Fehler

Exit Sub

Hell:
  intFehler = intFehler + 1

  If intFehler < 4 Then
    intAntwort = MsgBox("FehlerNr.: " & Err.Number & _
                      vbNewLine & _
                     "Beschreibung: " & Err.Description & _
                      vbNewLine & vbNewLine & _
                     "Soll das Makro neu gestartet werden?", _
                      vbYesNoCancel, intFehler & ". Fehler")

    If intAntwort = vbYes Then
      Call VonVorn   'Neustart
    Else
      MsgBox "Abbruch", , intFehler & " Fehler und y =" & y
      'Anweisung "End" würde alle Variablen auf 0 setzen:
      'End
    End If

  Else
    MsgBox "Maximale Anzahl an Fehlern (3) erreicht." & _
           vbNewLine & intFehler & " Fehler insg." & _
           vbNewLine & vbNewLine & _
    "Schließen Sie die Datei und versuchen Sie es erneut.", , "Abbruch"
  End If
End Sub



Download:   vba132.zip