Microsoft Excel

Herbers Excel/VBA-Archiv

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

Ereignis in Intervallen | Herbers Excel-Forum


Betrifft: Ereignis in Intervallen von: Universal
Geschrieben am: 07.01.2010 00:26:35

Moin zusammen,

gern würde ich verstehen, wie der "Application.OnTime"-Befehl funktioniert. Zum Test würde ich gern, das alle 10 Sekunden eine MsgBox mit der aktuellen Zeit angezeigt wird. Dafür habe ich folgenden Code geschrieben

Sub Zeitgeber()

Dim TimeStart As Double
Dim TimeEnd As Double

TimeStart = TimeSerial(Hour(Now), Minute(Now) + 1, 0)
TimeEnd = TimeStart + TimeSerial(0, 0, 10)
Application.OnTime earliesttime:=TimeStart, procedure:="Rede", _
                   LatestTime:=TimeEnd, schedule:=True

End Sub

Sub Rede()

MsgBox Time

End Sub

Nun wird leider nur einmal zur nächsten vollen Minute die MsgBox erzeugt. Ich würde sie anschließend aber gern alle 10 Sekunden erscheinen lassen ... Wie müsste der Code dann aussehen?

Vielen Dank für eure Hilfe!

viele Grüße
Uni

  

Betrifft: AW: Ereignis in Intervallen von: Josef Ehrensberger
Geschrieben am: 07.01.2010 00:52:47

Hi Uni,

das geht so.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Const clngInterval As Long = 10 'Intervall in Sekunden
Private Const cstrProc As String = "rede" 'Prozedurname
Private dblNextTime As Double


Sub Zeitgeber()
  
  dblNextTime = Now + TimeSerial(0, 0, clngInterval)
  
  Application.OnTime earliesttime:=dblNextTime, _
    procedure:=cstrProc, _
    schedule:=True
  
End Sub

Sub StopTimer()
  Application.OnTime earliesttime:=dblNextTime, _
    procedure:=cstrProc, _
    schedule:=False
End Sub
Sub Rede()
  
  MsgBox Time
  
  Zeitgeber
  
End Sub



Gruß Sepp


PS: Bei OnTime niemals das Stoppen vergessen, sonst ruft sich die Datei von selber auf!


  

Betrifft: AW: Ereignis in Intervallen von: Universal
Geschrieben am: 07.01.2010 01:19:39

Hi Sepp,

ahh, cool. :-) Okay, wie ich sehe, habe ich "nur" den Aufruf des Zeitgebers am Ende der "Rede"-Prozedur vergessen ... und natürlich den StopTimer. Den Rest würde ich als "Desing-Änderung" werten, oder? :-))

Vielen Dank!!!

Gute Nacht
Uni


  

Betrifft: AW: Ereignis in Intervallen von: Josef Ehrensberger
Geschrieben am: 07.01.2010 07:19:15

Hi Uni,

zum Teil. Die Variable dblNextTime" muss auf Modulebene deklariert sein, um sie
auch beim Stoppen verwenden zu können. Den Intervall und Prozedurnamen als Konstante
auf Modulebene zu deklarieren erleichtert die Anpassung des Codes.

Gruß Sepp


Beiträge aus den Excel-Beispielen zum Thema "Ereignis in Intervallen"