Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1264to1268
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Userform mehrer Textboxen prüfen
Peter
Hallo zusammen,
ich habe eine Userform mit mehreren Textboxen. Diese sollen zum Teil auf Datum/Zahl/Ganzzahl geprüft werden.
Wie kann ich die Textboxen zusammenfassen, damit der jeweilige Prüfungs-Code nur einmal geschrieben werden muss.
(Die Alternative, den Code in das jeweilige Change-Ereignis zu schreiben ist mir zu mühsam und unübersichtlich).
Grüße Peter

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

Betreff
Benutzer
Anzeige
AW: Userform mehrer Textboxen prüfen
21.05.2012 10:48:08
ChrisL
Hi Peter
Hier ein Beispiel:
Private Sub CommandButton1_Click()
Call CheckDatum("TextBox1")
Call CheckDatum("TextBox2")
Call CheckZahl("TextBox3")
End Sub

Private Sub CheckDatum(strTB As String)
If Not IsDate(Controls(strTB)) Then _
MsgBox "Kein Datum in " & strTB
End Sub

Private Sub CheckZahl(strTB As String)
If Not IsNumeric(Controls(strTB)) Then _
MsgBox "Kein Datum in " & strTB
End Sub

Gruss
Chris
strTB
21.05.2012 10:55:48
Rudi
Hallo Chris,
warum nicht gleich das Objekt?
Private Sub CommandButton1_Click()
Call CheckDatum(TextBox1)
End Sub
Private Sub CheckDatum(objTB As Object)
If Not IsDate(objTB) Then _
MsgBox "Kein Datum in " & objTB.Name
End Sub

Gruß
Rudi
Anzeige
AW: strTB
21.05.2012 11:08:37
ChrisL
Stimmt Rudi, aber vielleicht will er ja noch eine Schleife :)
Private Sub CommandButton1_Click()
Dim i As Byte
For i = 1 to 10
Call CheckDatum("TextBox" & i)
Next i
End Sub
cu
Chris
AW: Userform mehrer Textboxen prüfen
21.05.2012 10:49:59
Rudi
Hallo,
schreib ihn 1x und ruf ihn im Change auf.
Gruß
Rudi
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
Anzeige
AW: Userform mehrer Textboxen prüfen
21.05.2012 13:10:43
Rudi
Hallo,
oder ist dies gar nicht möglich?
doch, mit einer eigenen Klasse.
Deinen Code finde ich extrem umständlich. Prüfe doch einfach mit IsDate()
Gruß
Rudi

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige