Registriert seit: 28.02.2015
Version(en): 2016
Einen schönen 1.November Euch Allen.
Ich möchte gerne mein Zeitmakro pimpen und suche nach einer Möglichkeit, die Zeiteingabe im Dialog zu vereinfachen Hier möchte ich einfach nur drei oder vier Ziffern eingeben und daraus soll dann die Uhrzeit generiert werden Bsp: 930 wird zu 9:30;1145 zu 11:45 Diese Werte werden anschließend in einer DB eingetragen und Zeiten werden dann im Arbeitsblatt weiter berechnet. Kann mir jemand sagen, wie ich den String umformatiert bekomme?
Gruß Michael
Win 10 Office 2010 & 2016
Registriert seit: 11.04.2014
Version(en): Office 365
Hallo, versuche es mal damit, ist eine von meinen Jugendsünden: Code: Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range) Select Case Len(Target) Case 4 Cells(Target.Row, Target.Column) = Left(Cells(Target.Row, Target.Column), 2) & ":" & Right(Cells(Target.Row, Target.Column), 2) Case 3 Cells(Target.Row, Target.Column) = Left(Cells(Target.Row, Target.Column), 1) & ":" & Right(Cells(Target.Row, Target.Column), 2) Case 2 Cells(Target.Row, Target.Column) = 0 & ":" & Right(Cells(Target.Row, Target.Column), 2) Case 1 Cells(Target.Row, Target.Column) = 0 & ":" & 0 & Right(Cells(Target.Row, Target.Column), 1) End Select End Sub
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Registriert seit: 28.02.2015
Version(en): 2016
Danke für die schnelle Antwort.
Ich glaube aber, ich habe mich falsch ausgedrückt. Über das Textfeld in meiner Userform befülle ich die DB. Nun schreibe ich immer brav 10:45 in´s Textfeld. Aber da ich schreibfaul bin, möchte ich auf den Doppelpunkt verzichten ( Weil Hand ja auf dem Ziffernblock ist) Also möchte ich nur 1045 schreiben, Enter drücken und im Textfeld steht 10:45, das dann beim Speichern in der DB so eingetragen wird wie bisher. Hierzu suche ich den Lösungsansatz. Dank Euch im Vorab
Gruß Michael
Win 10 Office 2010 & 2016
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Michael, ist das so schwer, Klaus-Dieters Code auf eine TextBox umzuschreiben? Gruß Uwe
Registriert seit: 11.04.2014
Version(en): Office 365
Hallo Michael,
jede Antwort kann nur so gut sein, wie die Frage. Von einem UserForm war nicht die Rede.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, Zitat:Also möchte ich nur 1045 schreiben, Enter drücken und im Textfeld steht 10:45 also, das soll doch sicher auch passieren, wenn Du mit Maus oder TAB das Textfeld verlässt? Man könnte das deswegen so lösen: Code: Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) TextBox1.Text = Format(Val(Replace(TextBox1.Text, ":", "")), "00:0") End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 11.03.2015
Version(en): mittlerweile meistens 2019
02.11.2022, 12:13
(Dieser Beitrag wurde zuletzt bearbeitet: 02.11.2022, 12:15 von Der Steuerfuzzi.)
Hallo, ich habe mir mal vor Urzeiten eine Eingabeprüfung für eine Textbox gemacht. Schau mal, ob das in Deinem Sinn ist: Code: Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If IsDate(Replace(TextBox1.Value, "_", "0")) Then TextBox1.Value = Replace(TextBox1.Value, "_", "0") Else Cancel = True End If End Sub Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Select Case KeyCode Case 48 To 57, 96 To 105 'Zahlen If Left(TextBox1.Value, 1) = "_" Then 'Weiter einfügen TextBox1.Value = Mid(TextBox1.Value, 2, 1) & Mid(TextBox1.Value, 4, 1) & ":" & Mid(TextBox1.Value, 5, 1) Else KeyCode = 0 End If Case vbKeyBack TextBox1.Value = "_" & Mid(TextBox1.Value, 1, 1) & ":" & Mid(TextBox1.Value, 2, 1) & Mid(TextBox1.Value, 4, 1) KeyCode = 0 Case vbKeyDelete TextBox1.Value = "__:__" KeyCode = 0 Case vbKeyTab, vbKeyReturn Case Else KeyCode = 0 End Select End Sub
Standardwert der Textbox ist "__:__" (muss in den Eigenschaften der Textbox hinterlegt werden oder z. B. in Userform_Initialize gesetzt werden)
Gruß Michael
Registriert seit: 29.09.2015
Version(en): 2030,5
Code: Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns(6)) Is Nothing And Target.Count = 1 Then Application.EnableEvents = False Target = Format(Target, "00:00") Application.EnableEvents = True End If End Sub
Registriert seit: 11.03.2015
Version(en): mittlerweile meistens 2019
@snb Es geht hier um eine Userform und nicht um die Tabelle ...
Gruß Michael
Registriert seit: 29.09.2015
Version(en): 2030,5
02.11.2022, 13:20
(Dieser Beitrag wurde zuletzt bearbeitet: 02.11.2022, 13:21 von snb.)
In diesem Fall ist eben ein Userform oder TextBox überflüssig. Letztendlich sollte das Ergebnis ins Arbeitsblatt eingetragen werden. Warum dann nicht unmittelbar ohne Umwege?
|