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