Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
664to668
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
664to668
664to668
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

@Nepumuk - debuggen bei Timer per API

@Nepumuk - debuggen bei Timer per API
08.09.2005 22:34:29
micael
Hallo Nepumuk,
unter diesem Threat hast du mir am 05.09. sehr geholfen.
https://www.herber.de/forum/archiv/660to664/t660939.htm
Nun hab ich das Problem, dass wenn sich einer Fehler im Bereich der
Private Sub prcTimerStart ereignet sich sofort Excel schließt und ich keine Fehlermeldung oder eine Markierung des fehlerhaften Bereichs erhalte. Auch das schrittweise Vorgehen endet im Absturz.
Außerhalb kann Ich schritweise oder bis zu einer Stopmarkierung vorgehen - kein Problem - nur innerhalb der Timer-Anwendung.
Wie gehst du bei der Fehlersuche innerhalb der Timer-Anwendung vor - falls du auch mal das Problem hast, dass der Fehler dir nicht sofort ins Auge springt?
Danke und Gruß
Michael

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: @Nepumuk - debuggen bei Timer per API
08.09.2005 23:50:31
Nepumuk
Hallo Michael,
es ist ratsam, in Callback - Routinen immer eine Fehlerroutine einzubauen. Warum, hast du ja nun selbst mit bekommen. Also, mit "On Error Goto ..." eine Zeilenmarke anspringen, der Timer killen und die Routinen mit "Stop" in den Debugg - Modus bringen. Dann kannst du die Variablen abfragen, um Fehler zu ermitteln. Bei einem Timer, der Werte in Zellen ausgibt, ist es tödlich, während der Laufzeit des Timer selbst in die Tabelle etwas einzugeben, wenn du keine Fehlerroutine drin hast.
Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: @Nepumuk - debuggen bei Timer per API
10.09.2005 10:07:29
michael
Hallo Nepumuk,
komm erst heute wieder dazu, an meinem Problemchen weiterzuarbeiten...
Zuerst aber vielen Dank für deine Antwort.
Nun ich habe innerhalb der Timer-Schleife einen Fehler, denn ich nicht kenne und nicht abfangen kann. Somit schließt sich immer wieder Excel ohne mir eine Meldung über die Art des Fehlers zu hinterlassen.
Mit F8 (Einzelschritte) laufe ich in die von dir geschriebene OnError-Abfrage. Nun habe ich direkt darunter eine Stop-Marke plaziert. Nun komm ich über das OnError und kann mich mit F8 bis zum Fehler vorarbeiten, nur schließt sich dann nach Ausführen der fehlerhaften Zeile das Excel ohne Fehlermeldung oder die Möglichkeit zu debuggen - nun ich weiß zumindest in welcher Zeile der Fehler auftritt... - was mir bei meinen VBA-Künsten nicht wirlich hilft...
Durch Zufall hab ich das Timerintervall auf 5000msec hochgesetzt und konnte dann die Fehlermeldung erhaschen. Ich denke das war eher Zufall als eine reproduzierbare Fehlersuche.
Vielleicht hast du noch einen Tip, wie man in so einem Problemfall debuggen kann.
Danke und Gruß
Michael
Anzeige
AW: @Nepumuk - debuggen bei Timer per API
10.09.2005 11:24:33
Nepumuk
Hallo Michael,
1. Eine anständige Fehlerroutine:
Private Sub prcTimerStart(ByVal hwnd As Long, ByVal nIDEvent As Long, _
        ByVal uElapse As Long, ByVal lpTimerFunc As Long)

    Dim x As Byte
    On Error GoTo err_exit
    x = 1000
    Exit Sub
    err_exit:
    Call prcTimerStop
    MsgBox "Fehler " & CStr(Err.Number) & vbLf & vbLf & Err.Description
End Sub

Private Sub prcTimerStop()
    KillTimer lnghWnd, 0
End Sub

2. Wenn du nicht hinter den Fehler kommst, dann mach aus der Routine eine ganz normale Sub und rufe sie mit F5 auf.
Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: @Nepumuk - debuggen bei Timer per API
10.09.2005 12:25:13
michael
Hallo Nepumuk,
liest sich gut - werde ich testen.
..dann mach aus der Routine eine ganz normale Sub und rufe sie mit F5 auf - heißt ich mache Private Sub ein Sub?
Danke
Viele Grüße
Michael
AW: @Nepumuk - debuggen bei Timer per API
10.09.2005 12:35:38
Nepumuk
Hallo Michael,
du machst aus:
Private Sub prcTimerStart(ByVal hwnd As Long, ByVal nIDEvent As Long, _
    ByVal uElapse As Long, ByVal lpTimerFunc As Long)


einfach:
Private Sub prcTimerStart() '(ByVal hwnd As Long, ByVal nIDEvent As Long, _
    ByVal uElapse As Long, ByVal lpTimerFunc As Long)


und lässt das ganze entweder mit F5 komplett durchlaufen, oder mit F8 im Einzelschrittmodus.
Gruß
Nepumuk

Anzeige
ach so... super Danke!
10.09.2005 13:23:46
michael
Hallo Nepumuk,
danke! Ich bin immer wieder fasziniert...
Viele Grüße
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige