AW: Userform mehrer Textboxen prüfen
21.05.2012 12:12:20
Peter
Danke für die Antworten,
ich habe ihn einmal geschrieben, und im Change aufgerufen - funktioniert auch super.
Nur sind es inzwischen 60 verschiedene Textboxen mit Datum,
60 mit Ganzzahl und ca. 30 mit Zahl zum Prüfen.
Mein Gedanke ist, das Change einer Gruppe zu erfassen siehe Beispiel 146101v.xls. Nur schaffe ich es nicht, diese Gruppen zu erstellen - oder ist dies gar nicht möglich?
Dient eher der Faulheit, damit ich nicht so viele Cange schreiben/kopieren muss. Vor allem, wenn ich später was ändern will.
Beispiel (112600v.xls abgewandelt)
Private Sub tb_SK_max_gültig_1_Change()
Dim Text$, Ausgabe_Label$, Text_SelStart$, Text_SelLength$
With tb_SK_max_gültig_1
Text = .Text
' Prozedur zum Datum prüfen
Datum_prüfen Text, Text_SelStart, Text_SelLength, Ausgabe_Label
' Werte ausgeben
.Text = Text
If Text_SelStart "" Then .SelStart = Int(Text_SelStart)
If Text_SelLength "" Then .SelLength = Int(Text_SelLength)
End With
With lbl_SK_max_gültig_1
If IsDate(Ausgabe_Label) Then
.Caption = Format(Ausgabe_Label, "dd.MM.yy")
Else
.Caption = Ausgabe_Label
End If
End With
End Sub
Sub Datum_prüfen(Text$, Text_SelStart$, Text_SelLength$, Ausgabe_Label$)
' Eingabe ohne Punkte, nur Zahlen mit je 2 Stellen
Dim dteEingabe As Date
Dim iDay As Integer, iMonth As Integer, iYear As Integer
If Text = "" Then Exit Sub
If Not IsNumeric(Right(Text, 1)) Then
Beep
Text_SelStart = Len(Text) - 1
Text_SelLength = 1
Ausgabe_Label = "Nur Ziffern erlaubt!"
Exit Sub
Else
Ausgabe_Label = ""
End If
iDay = CInt(Left(Text, 2))
Select Case Len(Text)
Case 0
Case 1
If iDay > 3 Then
Beep
Text_SelStart = 0
Text_SelLength = 1
Ausgabe_Label = "Maximal 31 Tage"
Else
Ausgabe_Label = ""
'Text_SelStart = 1
End If
Case 2
If iDay > 31 Then
Beep
Text_SelStart = 0
Text_SelLength = 2
Ausgabe_Label = "Maximal 31 Tage"
Else
Ausgabe_Label = ""
'Text_SelStart = 2
End If
Case 3
iMonth = CInt(Right(Text, 1))
If iMonth > 1 Then
Beep
Text_SelStart = 2
Text_SelLength = 1
Ausgabe_Label = "Maximal 12 Monate"
Else
Ausgabe_Label = ""
'Text_SelStart = 3
End If
Case 4
iMonth = CInt(Right(Text, 2))
If iMonth > 12 Then
Beep
Text_SelStart = 2
Text_SelLength = 2
Ausgabe_Label = "Maximal 12 Monate"
Else
Ausgabe_Label = ""
Text_SelStart = 4
End If
Select Case iMonth
Case 2
If iDay > 29 Then
Beep
Text_SelStart = 0
Text_SelLength = 4
Ausgabe_Label = "Maximal 29 Tage"
Else
Ausgabe_Label = ""
'Text_SelStart = 4
End If
Case 4, 6, 9, 11
If iDay > 30 Then
Beep
Text_SelStart = 0
Text_SelLength = 4
Ausgabe_Label = "Maximal 30 Tage"
Else
Ausgabe_Label = ""
'Text_SelStart = 4
End If
End Select
Case 6
iMonth = CInt(Mid(Text, 3, 2))
iYear = CInt(Right(Text, 2))
If iYear Mod 4 > 0 And iMonth = 2 And iDay = 29 Then
Beep
Text_SelStart = 0
Text_SelLength = 6
Ausgabe_Label = "Maximal 28 Tage"
Else
dteEingabe = DateSerial(iYear, iMonth, iDay)
Ausgabe_Label = dteEingabe
Text_SelStart = 0
Text_SelLength = 6
End If
End Select
End Sub
Gruß Peter