Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
684to688
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
684to688
684to688
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Zeitformat für VBA Timer Monatstipp 09.05
21.10.2005 14:12:02
michael
Hallo.
weiß jemand wie man das Format für die Anzeige verändern kann. Ich will das Zeitintervall von 1000 auf 500 oder 200 ändern und entsprechend müsste dann die Anzeige in hh:mm:ss,000 geändert werden.
Danke und Gruß
Michael

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

Betreff
Datum
Anwender
Anzeige
AW: Zeitformat für VBA Timer Monatstipp 09.05
21.10.2005 15:46:05
Matthias
Hallo Michael,
Time() kann nur Sekunden, deshald der "Trick" mit Timer():

Private Sub Timer1_Timer()
Dim ti As Single, ms As String
ti = Timer
ms = Mid(Format(ti - Int(ti), "0.000"), 2, 2) 'mehr als 1 Stelle ist sinnlos bei 200ms!
Label1.Caption = "Aktuelle Zeit: " & Time & ms
End Sub

Gruß Matthias
AW: Zeitformat für VBA Timer Monatstipp 09.05
22.10.2005 10:22:01
michael
Hallo Matthias,
super vielen Dank so klappt es!
Nun ist mir aber eine grundlegende Sache nicht klar.
H. Herber schreibt im Mail zum Tipp
Dem VBA-Programmierer wird von der Programmseite anders als bei VB kein Timer zur Verfügung gestellt. Das Freeware-ActiveX-Steuerelement VBATimer.ocx behebt dieses Manko.
In VBA stehen doch mit dem Befehl time oder timer ein Timer zur Verfügung?
Auch bedient sich das Beispiel der Time-Funktion.
Was versteht man unter Timer im Zusammenhang mit dem ocx-Steuerelement? Ist das die Anzeige in der UserForm? Falls das so ist, dann brauch ich dieses Steuerelement nicht, wenn ich die Zeit in eine Zelle ausgeben möchte?
Danke und Gruß
Michael
Anzeige
AW: Zeitformat für VBA Timer Monatstipp 09.05
22.10.2005 10:43:17
Matthias
Hallo Michael,
zu bringst da was durcheinander:
Time() ist die VBA-Funktion, die die Uhrzeit zurückgit, sekundengenau.


Timer() ist eine VBA-Funktion, die die seit Mitternacht vergangenen Sekunden zurückgibt, in Sekundenbruchteilen (Variablentyp Single).


Das Steuerelement Timer() ist ein Steuerelement, welches alle x Millsekunden die Userform-Prozedur Timer1_Timer() (oder Timer2_Timer() etc., je nach Namen des Timers) ausführt, egal, ob die Prozedur dazu dienst, die Uhrzeit mit Time() in ein Userform zu schreiben oder das Vorhandensein einer Datei oder eines Zellwertes zu prüfen oder oder...
Wichtig ist dabei, dass die Userform geladen ist. Sie kann mit Me.Hide auch ausgeblendet werden, der Timer läuft trotzdem weiter.


ein Beispiel: Userform mit einem Timer, sonst keine Steuerelemente nötig. Bei Aktivierung blendet sich das UF selbst aus.

Option Explicit
Private Sub UserForm_Initialize()
With Timer1
.Interval = 1000
.Enabled = True
End With
End Sub
Private Sub UserForm_Activate()
Me.Hide
End Sub
Private Sub Timer1_Timer()
If Sheets(1).Range("A1") = "1" Then
Sheets(1).Range("B1") = "eins"
Else
Sheets(1).Range("B1") = "was anderes"
End If
End Sub

Aufruf:
Userform1.Show
Beenden kann man den Timer dann (von einem Standardmodul aus) mit Unload UserForm1.
Gruß Matthias
Anzeige
AW: Zeitformat für VBA Timer Monatstipp 09.05
22.10.2005 12:22:36
michael
Hallo Matthias,
danke fürs Licht im Dunkeln.
Klar, das eine geht ohne das andere nicht.... Irritiert hat mich die Anzeige, die in der UserForm wie eine Uhr läuft. Diese Uhr wird aber in bestimmten Zeitzyclen aufgerufen.
Es gibt ja auch einen Timer als API Funktion. Der lässt sich direkt in ein Modul schreiben, ist aber im Code etwas aufwändiger. mit dem kann ich z.B. alle 200ms eine Aktion (fortlaufend die Zeit in Zellen schreiben lassen od. ein beep) ausführen.
Ich denke sowas müsste doch auch mit diesem Timer gehen. Anstatt in best Zeitzyklen die Anzeige in Label1 zu ändern sollte doch z.B. auch alle 200ms ein beep möglich sein.
Falls das geht, könntest du mir an einem Beispiel zeigen, wie der ocx-Timer alle 200ms ein beep macht. Wie baue ich dann noch einen Zähler ein, dass nach 10 beeeps der Timer abbricht? Bei timern ist doch auch wichtig ein Errorhandler einzubauen - so was wie onerror abbrechen oder so.
Danke und Gruß
Michael
Anzeige
AW: Zeitformat für VBA Timer Monatstipp 09.05
23.10.2005 12:21:15
Matthias
Hallo Michael,
ins Userform-Modul:

Option Explicit
Private Sub UserForm_Initialize()
With Timer1
.Interval = 200
.Enabled = True
End With
End Sub
Private Sub UserForm_Activate()
Me.Hide
End Sub
Private Sub Timer1_Timer()
Static zaehler As Integer
zaehler = zaehler + 1
Beep
If zaehler = 10 Then Unload Me
End Sub

Durch If zaehler = 10 Then Unload Me wird der Timer nach 10 Ausführungen beendet, da der Timer ja am "geladen sein" des Userforms hängt.
Gruß Matthias
super - danke!!
23.10.2005 15:40:34
michael

175 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige