Clever-Excel-Forum

Normale Version: VBA// Textfeld / Uhrzeiteingabe ohne Doppelpunkt
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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
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
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
Hallo Michael,

ist das so schwer, Klaus-Dieters Code auf eine TextBox umzuschreiben? Wink

Gruß Uwe
Hallo Michael,

jede Antwort kann nur so gut sein, wie die Frage. Von einem UserForm war nicht die Rede.
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
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)
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
@snb Es geht hier um eine Userform und nicht um die Tabelle ...
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?
Seiten: 1 2