Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1280to1284
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
Uhrzeit in Textbox mit Drehfeld
25.10.2012 12:08:08
Jürgen
Servus Zusammen,
ich tüftel jetzt schon den ganzen Tag an dem Problem. Ich möchte in einem, Userform in einer Textbox die Uhrzeit einblenden und diese minutengenau mit einem Drehfeld (Spinbutton) ändern können. Ich komme hier nicht weiter!
Das einzige was ich beim suchen und googeln gefunden habe ist der folgende Code:
Private Sub SpinButton1_Change()
Dim t As Date
t = CDate(Me.SpinButton1 / 48)
Me.TextBox1 = Format(t, "short time")
End Sub
Private Sub TextBox1_Change()
Dim tim As Date
tim = CDate(Me.TextBox1)
Me.SpinButton1 = Int(CDbl(tim) * 48 + 0.5)
End Sub
Private Sub UserForm_Initialize()
Me.TextBox1 = Format(Int(Now * 48 + 0.5) / 48, "short Time")
End Sub
Aber ich verstehe nicht was in diesen Zeilen passiert
Format(Int(Now * 48 + 0.5) / 48, "short Time")
Me.SpinButton1 = Int(CDbl(tim) * 48 + 0.5)
t = CDate(Me.SpinButton1 / 48)
Den Befehl Format in Verbindung mit Short Time versteh ich. Was aber hinter Int passiert und für was Int hier angewendet wird, ist mir schleierhaft. Ich versuche dies Sachen eigentlich immer selbst herauszufinden. Das Int die nächste Ganzzahl angibt ist mir klar, aber warum hier? Ich dreh mich echt im Kreis.
Ich hoffe es kann mir einer von Euch helfen.
Vorab besten Dank.
Viele Grüße

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Uhrzeit in Textbox mit Drehfeld
25.10.2012 13:15:54
Rudi
Hallo,
das ist eine klassische Rundungsfunktion. In diesem Fall auf die nächste halbe Stunde.
Spinbuttons können ja nur Ganzzahlen enthalten.
Dim blnInit As Boolean
Private Sub SpinButton1_Change()
Dim t As Date
If Not blnInit Then
blnInit = True
t = CDate(Me.SpinButton1 / 1440)
Me.TextBox1 = Format(t, "short time")
blnInit = False
End If
End Sub
Private Sub TextBox1_afterupdate()
Dim tim As Date
If Not blnInit Then
blnInit = True
tim = CDate(Me.TextBox1)
Me.SpinButton1 = Int(CDbl(tim) * 1440 + 0.5)
blnInit = False
End If
End Sub
Private Sub UserForm_Initialize()
blnInit = True
Me.TextBox1 = Format(Int(Time * 1440 + 0.5) / 1440, "short time")
blnInit = False
End Sub
Gruß
Rudi

Anzeige
AW: Uhrzeit in Textbox mit Drehfeld
25.10.2012 14:22:32
Jürgen
Hallo Rudi,
danke für deine Hilfe. Ja, das mit den Ganzzahlen habe ich mir schon gedacht, aber wie kommst du auf die 1440? Jetzt bin ich total verwirrt. Und für was ist der Boolean Wert?
In dem Code bringt mir Excel hier einen Fehler:
Private Sub TextBox1_afterupdate()
Dim tim As Date
If Not blnInit Then
blnInit = True
tim = CDate(Me.TextBox1)
---->>> Me.SpinButton1 = Int(CDbl(tim) * 1440 + 0.5)
Fehlermeldung:
Laufzeit 380 -> Eingenschaft Value konnte nicht gesetzt werden. Ungültiger Eingneschaftswert.

AW: Uhrzeit in Textbox mit Drehfeld
25.10.2012 14:54:38
Jürgen
Hallo,
also warum 1.440 habe ich rausbekommen! Das sind die Minuten pro 24 Stunden. Wenn ich also Minuten genau rechnen will, dann muss ich die Ganzzahl mit 1440 multiplizieren bzw. dividieren.
Den Rest schau ich mir noch an.
Vielleicht kann mir jemand auf die Sprünge helfen.
Danke!

Anzeige
AW: Uhrzeit in Textbox mit Drehfeld
25.10.2012 15:01:09
Rudi
Hallo,
der Max-Wert deines Spinbuttons ist zu klein, deshalb der Fehler.
Private Sub UserForm_Initialize()
blnInit = True
Me.TextBox1 = Format(Int(Time * 1440 + 0.5) / 1440, "short time")
SpinButton1.Max=1440
blnInit = False
End Sub

Warum 1440? Ganz einfach: Eine Minute = 1/1440 Tag.
blnInit: Sonst rufen sich die Ereignisprozeduren gegenseitig auf.
Textbox1.Text= ... im Initialize bewirkt Textbox1_AfterUpdate, die wiederum durch SpinButton1= ... Spinbutton1_Change, die durch TextBox1=... Textbox1_afterupdate etc.
Gruß
Rudi

Anzeige
Erledigt. Fehler selbst herausgefunden
25.10.2012 15:24:33
Jürgen
Hallo Rudi,
danke für die Info. Warum der Fehler kommt, konnte ich auch herausfinden. Anscheinend hinterlegt Excel beim fehlen der Min/Max Definition für den Spinbutton irgendwelche Werte. Wenn ich als SpinButton.Min als 1 und SpinButton.Max mit 99999999 festlege, dann geht alles.
Danke nochmal!

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige