HERBERS Excel-Forum - das Archiv
Aktuelle-Zeit
Martin

Hallo Experten,
ich habe eine UserForm in der ich ein Label habe, ich möchte jetzt im Label die Aktuelle-Zeit (hh:mm:ss) angezeigt bekommen, wie geht das?
Für eure Hilfe wäre ich dankbar.
Gru?/Martin

Label1=now '_oT
NoNet

_oT = "ohne TExt"
AW: Label1=now '_oT
Martin

Hallo NoNet,
danke für eine Antwort, es klappt aber ich habe mich wahrscheinlich nicht richtig ausgedrückt, sorry.
Ich meinte eine Laufende-Uhrzeit. Kannst Du mir noch mal helfen.
Danke!
Gruß/Martin
Laufene Uhrzeit in UserForm Label anzeigen
NoNet

Hallo Martin,
ich hatte mir fast gedacht, dass Du das wolltest - aber leider hast Du das mit keinem Wort in Deiner Fragestellung erwähnt. Ich bin sicher, beim nächsten Mal formulierst Du deine Frage präziser ;-)) !
Kopiere folgenden Code in das UserForm-Modul :
Private Sub UserForm_Initialize()
ZeitAktualisieren
CommandButton1.Enabled = False  'START-Button deaktivieren
CommandButton2.Enabled = True   'STOP-Button aktivieren
End Sub
Private Sub CommandButton1_Click()
ZeitAktualisieren
CommandButton1.Enabled = False  'START-Button deaktivieren
CommandButton2.Enabled = True   'STOP-Button aktivieren
End Sub
Private Sub CommandButton2_Click()
ZeitAnzeigeStoppen
CommandButton1.Enabled = True   'START-Button aktivieren
CommandButton2.Enabled = False  'STOP-Button deaktivieren
End Sub
Das UserForm enthält einen START-Button (CommandButton1), mit dem die Anzeige der aktuellen Uhrzeit gestartet werden kann und einen STOP-Button (CommandButton2), mit dem die Anzeige der aktuellen Uhrzeit gestoppt werden kann.
Kopiere folgenden Code in ein allgemeines Modul (z.B. "Modul1") :
Dim datZeit As Date
Sub ZeitAktualisieren()
UserForm1.Label3 = Now
UserForm1.Repaint   'Anzeige aktualisieren
datZeit = Now + TimeValue("00:00:01") 'Neue Zeit
Application.OnTime datZeit, "ZeitAktualisieren"
End Sub
Sub ZeitAnzeigeStoppen()
Application.OnTime datZeit, "ZeitAktualisieren", Schedule:=False
End Sub
Gruß, NoNet
AW: Label1=now '_oT
Thorto



      
Hi Martin,
Das alles 
in ein Modul:
Option Explicit
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As LongByVal nIDEvent As LongByVal uElapse As LongByVal lpTimerFunc As LongAs Long
Public Declare Function KillTimer Lib "user32" (ByVal hwnd As LongByVal nIDEvent As LongAs Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As StringByVal lpWindowName As StringAs Long
Sub TP(ByVal hwnd As LongByVal nIDEvent As LongByVal uElapse As LongByVal lpTimerFunc As Long)
UserForm1.labTime = Time
DoEvents
End Sub
Sub start()
UserForm1.Show
End Sub
und das alles 
in die Userform:
Option Explicit
Const FQ As Long = 1000 'Millisekunden
Dim hwnd As Long
Private Sub cmdEnde_Click()
Unload Me
End Sub
Private Sub UserForm_Activate()
hwnd = FindWindow("", Me.Caption)
Call SetTimer(hwnd, 0, FQ, AddressOf TP)
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Call KillTimer(hwnd, 0)
End Sub
nun noch 
in der Userform ein Label mit dem Namen labTime einbauen und ein commandButton mit dem Namen cmdEnde.
Sollte dann funzen.
Bitte um Rückmeldung
Gruß Thorto 


Interessant : Mit APIs auf TIMER schießen ;-)
NoNet

Hallo Thorno,
mit APIs auf TIMER zu schießen ist auch eine interessante Variante - da wär eich NIE (!) drauf gekommen.
Habe diese Variante getestet und sie funktioniert ebenfalls einwandfrei.
Noch eine Frage : Gibt es eine Möglichkeit das DoEvents wieder "rückgängig" zu machen, also die Kontrolle wieder an Excel zu übergeben ?
Danke und Gruß, NoNet
AW: Label1=now '_oT
Martin

Hallo Thorto,
sorry, das ich mich erst jetzt melde.
Ich habe Deinen Code bei mir eingbaut und es funktioniert prima.
Danke, für Deine Hilfe
Gruß/Martin