Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: TextBox für Zeiteingabe definieren

TextBox für Zeiteingabe definieren
24.07.2024 13:27:40
Saffi
Hallo werte Community,

ich habe ein Fourmlar mit diversen Textboxen. In denen ich Einträge verschiedenster Art vornehme. Was mich allerdings zur Verzweiflung bringt, ist die richtige Formatierung einer TextBox für Zeiteingabe. Ich möchte gern, das mittels AfterUpdate die Eingabe von bspw. 1230 auf 12:30 (Stunden Minuten) gesetzt wird, um eine benutzerfreundliche Eingabe zu erhalten. Aber, dieser Wert soll dann später auch als Zeitwert in einer Tabelle eingetragen werden.

Erster Ansatz brachte nicht den erwünschten Erfolg:

Private Sub TextBoxDruckzeit_AfterUpdate()


Dim a As String
a = Len(Me.TextBoxDruckzeit)
If a = 2 Then
Me.TextBoxDruckzeit = Left(Me.TextBoxDruckzeit, a) & ":" & 0
End If
TextBoxDruckzeit = Format(Me.TextBoxDruckzeit.Value, "hh:mm")

End Sub


Hier erhalte ich bei der Eingabe 1230 nur eine 00:00.

Meine Daten werden aus dem Formular mittels dieser Befehlszeile:



Druckzeit = Me.TextBoxDruckzeit.Text
....
Cells(last, 12).Value = Druckzeit
(Auszug aus meinem Code)

eingetragen.

Im Anschluss formatiere ich sogar das Tabellenblatt nochmals.

Beispiel:



Columns("J").NumberFormat = "#,##0.00 €" 'Betrag
Columns("K").NumberFormat = "@" 'Kommentar
Columns("L").NumberFormat = "hh:mm" 'Zeit


Ist nur ein Auszug!

Vielen Dank im Voraus für Anregung und Hilfe. ;)
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TextBox für Zeiteingabe definieren
24.07.2024 14:08:00
Saffi
Habe nun mal versucht den ersten Codeschnipsel aussen vor zu lassen. nun wird 1230 zwar übergeben, aufgrund meiner Nachformatierung der Tabellenspalte steht dann auch wieder 00:00 drin. Unter Zellformatierung kann ich aber mittels Format Zahl die 1230 auslesen. Vielleicht ist das für euch noch ein weiterer Ansatz dazu. Danke euch!
Anzeige
AW: TextBox für Zeiteingabe definieren
29.07.2024 11:04:06
daniel
Hi
verwende in diesem Fall LIKE um festzustellen was der Anwender eingegeben hat.
LIKE hat einen Joker für Ziffern #, damit kann man dann explizt prüfen:

With TextBoxDruckzeit

if .Text like "##:##" then
'nix machen
elseif .Text like "#:##" Then
.Text = "0" & .Text
elseif .Text like "####" or .Text like "###" then
.Text = Format(Clng(.text), "00\:00")
else
end if
if Isdate(.Text) then
Cells(last, 12).Value = CDate(.Text)
else
Msgbox "Bitte korrekte Uhrzeit in der Form ""12:30"" oder ""1230"" eingeben.
end if
end with


Gruß Daniel
Anzeige
AW: TextBox für Zeiteingabe definieren
24.07.2024 14:14:03
Oberschlumpf
Hi,

ich weiß keine Lösung, aber...

Vielleicht hilft es anderen Antwortern, wenn du per Upload eine Bsp-Datei mit Bsp-Daten und Textboxen zeigst und innerhalb der Datei erklärst, was du versucht hast, was dann anders rausgekommen ist, wie du es haben willst.

Ciao
Thorsten
Anzeige
AW: TextBox für Zeiteingabe definieren
24.07.2024 14:34:43
Saffi
Danke für Deinen Hinweis.

Ich habe mal eine abgespeckte Version erstellt. Vielleicht kann mir einer dabei helfen. Danke.

https://www.herber.de/bbs/user/171229.xlsm

AW: TextBox für Zeiteingabe definieren
24.07.2024 15:06:28
peter
Hallo

Probier mal



Private Sub TextBoxDruckzeit_AfterUpdate()

Dim a As String

a = Me.TextBoxDruckzeit

If Len(a) 4 Then
a = "0" & a
End If
a = Mid(a, 1, 2) & ":" & Mid(a, 3, 2)

Me.TextBoxDruckzeit = a

TextBoxDruckzeit = CDate(Me.TextBoxDruckzeit.Value)

End Sub



Peter
Anzeige
AW: TextBox für Zeiteingabe definieren
24.07.2024 15:12:09
Saffi
Der Wahnsinn. Hat auf Anhibe geklappt. Werde dies nun in meine bestehende Datenbank einbauen. Das hat mir sehr geholfen. ;O)
AW: TextBox für Zeiteingabe definieren
27.07.2024 20:37:41
Saffi
Hallo Peter,

vielleicht liest du das noch.

Der Code klappt soweit sehr gut. Ich habe aber ein kleines Phänomen beobachtet.

Wenn ich im Formular meine Zeit eintrage und ich mittels Tab-Taste weitergehe, kommt ein Laufzeitfehler 13 / Typen unverträglich

Wenn ich aber meine Eingabe tätige und mit der Maus von Feld zu Feld gehe, dann kommt keine Fehlermeldung

Die Zeile, wo der Fehler erscheint ist

TextBoxDruckzeit = CDate(Me.TextBoxDruckzeit.Value)


Dein gesamter Codeschnipsel war:

Private Sub TextBoxDruckzeit_AfterUpdate()


Dim a As String

a = Me.TextBoxDruckzeit

If Len(a) 4 Then
a = "0" & a
End If
a = Mid(a, 1, 2) & ":" & Mid(a, 3, 2)

Me.TextBoxDruckzeit = a

TextBoxDruckzeit = CDate(Me.TextBoxDruckzeit.Value)

End Sub


Vielleicht hast Du noch einen Lösungsansatz für mich.

Besten dank im Voraus.
Anzeige
AW: TextBox für Zeiteingabe definieren
29.07.2024 10:39:07
peter
Hallo

Wenn schon eine "richtige" Uhrzeit drinnen ist kommt es zum Fehler.

Probier mal



Private Sub TextBoxDruckzeit_AfterUpdate()

Dim a As String

a = Me.TextBoxDruckzeit

If Len(a) 4 Then
a = "0" & a
End If

If Len(a) = 4 Then
a = Mid(a, 1, 2) & ":" & Mid(a, 3, 2)
End If

Me.TextBoxDruckzeit = a

TextBoxDruckzeit = CDate(Me.TextBoxDruckzeit.Value)
End Sub



Peter
Anzeige
AW: TextBox für Zeiteingabe definieren
05.08.2024 10:57:45
Saffi
Hallo Peter,

sorry für die späte Rückmeldung, war im Urlaub.

Habe soeben den Code ergänzt. Es funktioniert jetzt.

Prima, vielen Dank nochmal.
AW: TextBox für Zeiteingabe definieren
25.07.2024 08:16:52
hary
Moin
Da du ein Listobjekt benutzt.
Code fuer den Button:
Private Sub CB_WE_Click()

With Worksheets("Tabelle1").ListObjects("Tabelle1")
.ListRows.Add 'neue Zeile
.ListRows(.ListRows.Count).Range.Value = Array(.ListRows.Count, Format(TextBoxDruckzeit, "hh:mm")) 'eintragen
End With
End Sub

gruss hary
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige