Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Resume next....wohin positionieren

Betrifft: Resume next....wohin positionieren von: STeve
Geschrieben am: 08.10.2020 13:59:45

Hi liebe Helfer/Könner/Gönner..…...bitte um wieder mal um eure Hilfe.

In einem Modul start () werden 4 Module (Test 1 bis 4) abgearbeitet wo immer ein Laufzeitfehler Nr. 11 eingearbeitet ist.

Habe einen Errorhandler gebaut.

Es soll nur den Fehler auslesen und jeden Fehler auf ein dafür eigens erstelltes Blatt "Fehlerauslese" schreiben.

Danach soll es im betreffenden Modul den Code fortsetzen und n i c h t zum nächsten Modul springen.

Anbei die Datei
https://www.herber.de/bbs/user/140733.xlsm

Besten Dank für eure Lösungen
glg STeve

Betrifft: AW: Resume next....wohin positionieren
von: Daniel
Geschrieben am: 08.10.2020 14:43:56

hi
da musst du für jedes der TestX-Makros ein eigenes Error-Handling programmieren.
das On Error Resume Next gilt nur im selben Marko, aber nicht in den aufgerufenen Sub-Prozeduren.
wobei ich es bevorzuge, auf Errorhändlings zu verzichten und mögliche Fehlerursachen vorab zu prüfen.
dh wenn eine Division durchgeführt wird, dann erfolgt vor die Division die Sicherheitsabfrage: if DIVISOR = 0
Sofern man die Möglichen Fehlerursachen vorab bestimmen kann, ist das in der Regel der bessere Weg.
Errorhändlings macht man eher dann, um sich gegen nicht vorhergesehene oder nicht abprüfbare Fehler abzusichern.


Gruß Daniel

Betrifft: AW: Resume next....wohin positionieren
von: STeve
Geschrieben am: 08.10.2020 14:59:12

Hallo Daniel......danke für deine Antwort. Leider ist sie nicht erfreuend. :-(
….dann werde ich mich mal daran machen für jedes Makro ein Handling zu entwickeln.

..bis jetzt konnte ich darauf verzichtet - jetzt wird es aber notwendig. Fehlerursachen vorher bestimmbar - leider negativ.
gegen nicht vorhergesehene oder nicht abprüfbare Fehler abzusichern- genau das wäre mein Gedanke.

dir noch einen schönen Tag und mfg
STeve



Betrifft: AW: Resume next....wohin positionieren
von: Frank Svoboda
Geschrieben am: 08.10.2020 15:17:08

Hallo STeve,

die Fehlerbehandlung von VBA ist schon iregendwie tückisch. Ich versuche es immer so einfach wie möglich zu halten. Das Problem in Deinem Script ist, dass der Fehler in den Subs textX ausgelöst wird und nicht in start. Ob und wie es in VBA möglich ist, dass der Fehler nach start »hochblubbert«, weiß ich nicht. (Aber vielleicht weiß es sonst jemand – ich lerne gern dazu.)

Ein Lösung ist, On Error in den Subs textX zu setzen und in jedem der zugehörigen ErrorHandler ein Sub aufzurufen, das den Fehler in die Tabelle einträgt, und danach das Resume Next auszuführen.
Sub start()
    test1
    test2
    test3
    test4
End Sub

Private Sub FehlerSchreiben()
    Dim aktBlatt As String
    Dim WsTabelle As Worksheet
    Dim BoVorhanden As Boolean
    aktBlatt = ActiveSheet.Name
    For Each WsTabelle In Sheets
        If WsTabelle.Name = "Fehlerauslese" Then
            BoVorhanden = True
        End If
    Next WsTabelle
    If BoVorhanden = False Then
        Sheets.Add.Name = "Fehlerauslese"
    End If
    ActiveWorkbook.Worksheets(aktBlatt).Activate
    With ActiveWorkbook.Worksheets("Fehlerauslese")
        Z = 2
        Do While ActiveWorkbook.Worksheets("Fehlerauslese").Cells(Z, 2) <> ""
            Z = Z + 1
        Loop
        .Cells(Z, 1) = "auf dem Tabellenblatt: " & aktBlatt
        .Cells(Z, 2) = "Fehler Nr.: " & CStr(Err.Number)
        .Cells(Z, 3) = Err.Description
        .Cells(Z, 4) = "in Zeile : " & CStr(Erl)
        .Cells(Z, 5) = Err.Source
     '  .Cells(Z, 6) = Err.Raise
        With .Range("A:D")
            .Columns.EntireColumn.AutoFit
        End With
    End With
End Sub

Private Sub test1()
    ActiveWorkbook.Worksheets("Auswertung 1").Activate
    On Error GoTo errorhandler
    Debug.Print 1 / 0
    MsgBox "OK_Fehler im Modul Test 1 _Auswertung 1 ausgelesen"
Exit Sub
errorhandler:
    FehlerSchreiben
    Resume Next
End Sub

' und genauso für die weiteren 3 test-Subs


Viele Grüße
Frank

Betrifft: Danke - so flutscht es
von: STeve
Geschrieben am: 09.10.2020 07:16:13

Guten Morgen lieber Frank.

DANKE für deine Mühen/Hilfe/Tipp....so funzt es in meinem Sinne.

Dir noch einen schönen Tag und glg

STeve

Betrifft: AW: Danke - so flutscht es
von: Daniel
Geschrieben am: 09.10.2020 08:16:18

Ist das nicht genau das, was ich dir bereits gesagt habe?
Gruß Daniel

Betrifft: Herzlichen Dank....
von: STeve
Geschrieben am: 09.10.2020 09:58:36

Hallo lieber Daniel......Ein herzliches DANKE natürlich auch an dich.

Wie du ja richtig festgestellt hast ist es auch deine Antwort/Lösung/Tipp.

Wünsch dir noch einen schönen Tag und ein schönes WE und hoffe weiterhin auf deinen immer hilfreichen Einsatz in diesem tollen Forum.

glg STeve