Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Uhrzeitprüfung im keypress für mehrere TextBoxen

Uhrzeitprüfung im keypress für mehrere TextBoxen
18.12.2018 11:42:13
Bastian
Hallo,
ich lese schon lange das Forum still mit und habe auch schon gute Lösungen bekommen. Nun stehe ich jedoch vor einem Problem welches ich nicht lösen kann.
Ich habe in einer UserForm mit mehreren TextBoxen, in welche Uhrzeiten eingegeben werden. Im Tag haben diese verschiedene Namen, und der Name der Boxen ist auch individuell der besseren übersicht halber da verschiedene Zeiten zu verschiedenen Informationen gehören.
Verschiedene Plausibilitätsprüfungen bzgl. der Datumseingaben habe ich erfolgreich implementiert, nun soll die korrekte Uhrzeiteingabe folgen. Der Code funktioniert auch wunderbar wenn ich ihn als 'Private Sub' im KeyPress einer einzelnen TextBox habe, nun möchte ich das ganze aber als Funktion da ich es Unsinn finde, einen längeren Code zigmal für einzelne TextBoxen zu setzen.
Wie gesagt, wenn ich den Code der Function in den KeyPress setze und Len(Zeit) gegen Len(TextBoxName) tausche funktioniert alles.
Über Hilfe wäre ich äußerst dankbar.
Hierfür habe ich folgendes geschrieben:

Private Function Uhrzeit(Zeit As MSForms.TextBox, ByVal Key As Integer) As Integer
Select Case Len(Zeit)
Case 0               'Hh:mm 1. Stelle = H
Select Case keyascii
Case 48 To 50        '0-2
Case Else
keyascii = 0         'null
End Select
Case 1               'hH:mm 2. Stelle = H
If Left(Zeit, 1) = 2 Then
Select Case keyascii
Case 48 To 51        '0-3
Case Else
keyascii = 0         'null
End Select
Else
Select Case keyascii
Case 48 To 57        '0-9
Case Else
keyascii = 0         'null
End Select
End If
Case 2               'hh:mn 3. Stelle = :
Select Case keyascii
Case 48 To 53, 58    '0-5, :
If keyascii  58 Then Zeit = Zeit & ":"
Case Else
keyascii = 0         '0
End Select
Case 3               'hh:Mm 4. Stelle = M
If Right(Zeit, 1) = ":" Then
Select Case keyascii
Case 48 To 53        '0-5
Case Else
keyascii = 0         'null
End Select
End If
Case 4               'hh:mM 5. Stelle = M
Select Case keyascii
Case 48 To 57        '0-9
Case Else
keyascii = 0         'null
End Select
Case Else
keyascii = 0
End Select
End Function

und im

Private Sub txtUhrzeitEreignisX_KeyPress(ByVal keyascii As MSForms.ReturnInteger)
keyascii = Uhrzeit(ActiveControl, keyascii)
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Uhrzeitprüfung im keypress für mehrere TB
18.12.2018 12:12:15
Daniel
Hi
Ersetze im Code der Funktion jedes "keyascii", dessen Wert du ausliest durch "Key"
und jedes "keyascii", dem du einen Wert zuweist durch "Uhrzeit" (Name der Funktion)
Select Case Key
Case 48 To 50        '0-2
Case Else
Uhrzeit = 0         'null
End Select

verwende, wenn du den Text der TextBox abfragst, "Zeit.Text" anstelle von "Zeit"
Gruß Daniel
Anzeige
AW: Uhrzeitprüfung im keypress für mehrere TB
18.12.2018 12:56:20
Bastian
Besten Dank für die Hilfe, das habe ich soweit umgesetzt. Allerdings bekomme ich bereits im KeyPress die Fehlermeldung:
Laufzeitfehler #13#: Typen unverträglich
Beispieldatei oder zumindest
18.12.2018 13:41:25
Daniel
vollständiger Code von beiden Makros wäre nett, um den Fehler nachvollziehen zu können.
Gruß Daniel
AW: Beispieldatei oder zumindest
18.12.2018 13:58:12
Bastian

Private Sub txtTatUhrzeit_KeyPress(ByVal keyascii As MSForms.ReturnInteger)
keyascii = Uhrzeit(ActiveControl, keyascii)
End Sub
und
Private Function Uhrzeit(Zeit As MSForms.TextBox, ByVal Key As Integer) As Integer
Select Case Len(Zeit)
Case 0               'Hh:mm 1. Stelle = H
Select Case Key
Case 48 To 50        '0-2
Case Else
Uhrzeit = 0          'null
End Select
Case 1               'hH:mm 2. Stelle = H
If Left(Zeit, 1) = 2 Then
Select Case Key
Case 48 To 51        '0-3
Case Else
Uhrzeit = 0         'null
End Select
Else
Select Case Key
Case 48 To 57        '0-9
Case Else
Uhrzeit = 0          'null
End Select
End If
Case 2               'hh:mn 3. Stelle = :
Select Case Key
Case 48 To 53, 58    '0-5, :
If Key  58 Then Zeit.Text = Zeit.Text & ":"
Case Else
Uhrzeit = 0         '0
End Select
Case 3               'hh:Mm 4. Stelle = M
If Right(Zeit.Text, 1) = ":" Then
Select Case Key
Case 48 To 53        '0-5
Case Else
Uhrzeit = 0         'null
End Select
End If
Case 4               'hh:mM 5. Stelle = M
Select Case Key
Case 48 To 57        '0-9
Case Else
Uhrzeit = 0         'null
End Select
Case Else
Uhrzeit = 0
End Select
End Function

Anzeige
AW: Beispieldatei oder zumindest
18.12.2018 14:19:13
Daniel
Hi
ich habe jetzt die Codes kopiert und in eine Datei eingebaut, bei mir kommt kein Fehler!
allerdings fehlt noch, den Key-Wert wieder an die Funktion zurückzugeben, wenn er zulässig ist und eine Uhrzeit ergibt.
das machst du am besten am Anfang, in der folge wird der Wert dann ja auf 0 gesetzt, wenn die Eingabe keine Zulässige Uhrzeit ergibt.
Private Function Uhrzeit(Zeit As MSForms.TextBox, ByVal Key As Integer) As Integer
Uhrzeit = Key
Select Case Len(Zeit)
aber wie gesagt, der Rest funktioniert bei mir, deinen Fehler 13 bekomme ich nicht.
ggf hilft es, wenn du "Zeit" als Control deklarierst (allgemeines Userform-Steuerelement)
Private Function Uhrzeit(Zeit As Control, ByVal Key As Integer) As Integer
wenn das auch nicht hilft, müsstest du die Datei hochladen.
Gruß Daniel
Anzeige
AW: Beispieldatei oder zumindest
18.12.2018 15:00:15
Bastian
Ich habe jetzt das Ganze nach deinen Vorschlägen auch in einer neuen Datei mit mehreren TextBoxen probiert, da läuft es, in meiner Ursprungsdatei nicht.
Vielen Dank für die Hilfe, im Grunde geht es, ich muss im restlichen Code mal auf Fehlersuche gehen.
;

Forumthreads zu verwandten Themen

Anzeige
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