Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Aktuelle-Zeit | Herbers Excel-Forum


Betrifft: Aktuelle-Zeit von: Martin Keller
Geschrieben am: 24.11.2009 22:38:09

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

  

Betrifft: Label1=now '_oT von: NoNet
Geschrieben am: 24.11.2009 22:40:11

_oT = "ohne TExt"


  

Betrifft: AW: Label1=now '_oT von: Martin Keller
Geschrieben am: 24.11.2009 22:56:05

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


  

Betrifft: Laufene Uhrzeit in UserForm Label anzeigen von: NoNet
Geschrieben am: 24.11.2009 23:23:46

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


  

Betrifft: AW: Label1=now '_oT von: Thorto
Geschrieben am: 24.11.2009 23:24:56



      
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 

     Code eingefügt mit Syntaxhighlighter 3.0



  

Betrifft: Interessant : Mit APIs auf TIMER schießen ;-) von: NoNet
Geschrieben am: 24.11.2009 23:32:10

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


  

Betrifft: AW: Label1=now '_oT von: Martin Keller
Geschrieben am: 25.11.2009 10:02:51

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