Welches hwnd Argument in Timerfunktion?

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    Welches hwnd Argument in Timerfunktion?

    Hallo zusammen,
    da es in Excel kein Timer-Steuerelement gibt, helfe ich mir mit folgender Funktion aus:

    Visual Basic-Quellcode

    1. Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long


    Die wird im normalen VB dann anscheinend beispielsweise so aufgerufen:

    Visual Basic-Quellcode

    1. Private Const TIMER_ID = 101
    2. Dim Timervariable as Long
    3. Timervariable = SetTimer(Me.hwnd, TIMER_ID, 200, AddressOf TimerProzedur)


    Mein Problem ist, dass das mit dem "Me.hwnd" im ersten Argument in VBA nicht klappt. Im Internet habe ich auch schon öfters gesehen, dass das erste Argument 0 ist, allerdings klappt das in VBA auch nicht (Index außerhalb des gültigen Bereichs).

    Weiß jemand, was ich in das hwnd Argument reinschreiben kann, damit der Timer funktioniert?

    Vielen Dank im Voraus,
    Mfg Knusperbärauge
    Hallo,

    ich weiß zwar nicht wie 0 in diesem Fall auserhalb vom gültigen Bereich sein kann, aber hast du schonmal einfach 0& probiert?

    Mfg jvbsl
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Danke, habs grade ausprobiert aber es kommt die selbe Fehlermeldung (Laufzeitfehler 9: Index außerhalb des gültigen Bereichs)


    Kann mir jemand evt. sagen was man da überhapt angibt?


    Microsoft sagt nur folgendes, aber da kann ich mir wenig drunter vorstellen...
    hWnd bezeichnet das Fenster der Zeitgeber zugeordnet werden. Dieses Fenster ist im Besitz des aufrufenden Threads. Wenn dieser Parameter NULL ist, wird kein Fenster den Zeitgeber zugeordnet ist, und der nIDEvent-Parameter wird ignoriert.
    Danke für die Antworten bis jetzt,

    aber wenn hWnd das Fensterhandle beschreibt, wie sieht das dann in Excel aus wo man keine Fenster sondern nur Tabellenblätter hat?

    Meine Timerprozedur sieht bis jetzt nur so aus (sie wurde leider noch nie Aufgerufen weil SetTimer aufgrund von hWnd nicht klappt):

    Visual Basic-Quellcode

    1. Public Function TimerProzedur(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long) As Long
    2. ThisWorkbook.Sheets("2").Range("A1").Value = "A"
    3. End Function


    Später kommt da natürlich noch mehr rein, ich will Snake damit programmieren :D
    On Error Resume Next ist hier ganz schlecht, da du später nicht weißt, wenn ein Fehler auftritt, du solltest ihn erst vollständig beheben und dann das einsetzen um etwas unerwartetes zu verhindern...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---