"Komisches" Error-Verhalten

26/01/2012 - 14:59 von Heinz-Mario Frühbeis | Report spam
Hallo!

Ich werde im Moment aus folgendem Error-Verhalten überhaupt schlau:

Private Sub MakeSome()
' irgendein Code , dann
MakeSomeMore
UndNochMehr
End Sub

Private Sub MakeSomeMore()
Dim C As Collection
'On Error Resume Next
Set C = New Collection
C.Add "HALLO", "HALLO"
C.Add "HALLO1", "HALLO1"
C.Add "HALLO", "HALLO" ' hier ist jetzt ein Fehler
C.Add "HALLO2", "HALLO2"
Set C = Nothing
End Sub

Private Sub UndNochMehr()
' irgendein Code
End Sub

Public Function WPROC( hWnd As Long, msg As Long, wParam As Long, lParam As
Long) As Long
' Irgendwelche WM_'s
End Function

Wenn nun der Fehler bei MakeSomeMore auftritt, dann wird das Programm dort
nicht angehalten.
Auch C.Add "HALLO2", "HALLO2" wird nicht mehr aufgerufen.
Auch UndNochMehr wird nicht mehr aufgerufen.
Bei Schrittweisem durchlaufen mit F8 komme ich in die WPROC mir WM_KEYUP.
Wenn On Error Resume Next wieder drin ist, dann làuft das Programm wieder
zeilenweise durch.

Es sind wirklich_ keine_ 'On Error GoTo'-Befehle enthalten.
In einigen anderen Routinen sind allerdings 'On Error Resume Next'-Befehle
drin.

Dieses Verhalten kommt auch in anderen Sub's und Funktionen vor.

Das doofe daran ist, daß ich ohne_ On Error Resume Next nur feststellen
kann, ob etwas nicht stimmt, wenn z. Bsp. ein Programmablauf nicht eintritt,
der aber eintreten sollte.
Derzeitige Option für das Fehlerverhalten ist 'In Klassenmodul'.
Ein àndern nach 'Bei nicht verarbeiteten Fehlern' brachte keine Änderung.
Und 'Bei jedem Fehler' bringt ja gar nix.

Hat hier jemand eine Idee dazu und kann/möchte helfen?

Mit Gruß
Heinz-Mario Frühbeis
 

Lesen sie die antworten

#1 Heinz-Mario Frühbeis
26/01/2012 - 16:53 | Warnen spam
Ich habe jetzt mal ausprobiert und aus
Public Function WPROC ...
ein Interface gemacht ... aber das es brachte keine Änderung.
Das Programm hàlt nicht an bei einem Fehler.
Des weiteren habe ich alle Err.Clear und Er.Number = 0 rausgenommen.
Das Programm hàlt nicht an bei einem Fehler.
Des weiteren:
Bsp.:
Private Sub DoSome()
Dim C As Collection
Dim i As Integer, j As Integer
On Error Resume Next
For i = 1 To 10
Set C = New Collection
C.Add "HALLO", "HALLO"
C.Add "HALLO", "HALLODu"
C.Add "HALLO", "HALLODu" 'hier ein Fehler
Debug.Print i, Err.Number ' Ergebnis ist 457
For j = 1 To 3
C.Add "HALLO", "HALLO" & CStr(j)
Debug.Print j, Err.Number
' Hier sieht es dann so aus: <mit ganz großem Staunen>
' 1 457
' 2 0
' 3 0
Next j
Set C = Nothing
Next i
End Sub

In dem Moment, wo ein Fehler auftritt "geht" das Programm nach was weiß ich
wohin :((
Da wàre ich ja quasi gezwungen in jede Routine erst mal On Error Resume Next
reinzuschreiben ...
und selbst dann ist die Fehlernummer wohl nicht mehr parat.

Ähnliche fragen