ich benötige einen Tritt in den Hintern, ich habe ein Problem und ich fürchte, dass die Lösung vor mir liegt, jedoch: ich bin zu blind.
Vorbetrachtung
Ich habe ein Userform, in dem ich mehrere Textboxen zur Laufzeit erzeuge. Einige davon dienen der Eingabe von Daten (Pl. von Datum).
Um die Eingabe für die/den Anwender/-in zu erleichtern, gibt das Userform während der Eingabe ein visuelles Feedback, ob das Datum im richtigen Format eingegeben wird/wurde (Textbox-Hintergrund wird rot, ControlTipText enthält einen entsprechenden Hinweis).
Das ganze realisiere ich mit mit einer Ereignisklasse.
So sieht's aus
Option Explicit
'Documentation: http://www. _
online-excel.de/excel/singsel_vba.php?f=57
Public WithEvents thisValidate As MSForms.TextBox
Private Sub thisValidate_Change()
If thisValidate.Tag = "date" Then Call IsDate(thisValidate)
End Sub
Private Sub IsDate(oControl As MSForms.TextBox)
Dim IsADate As Boolean
Dim thisUserform As UserForm
Set thisUserform = get_CurrentUserform
IsADate = RegExValidate(oControl.Value, "^\d{2}\.\d{2}\.\d{4}$")
If IsADate = False And oControl.Value "" Then
thisUserform.oControl.BackColor = RGB(255, 64, 64)
thisUserform.oControl.ControlTipText = "Bitte geben Sie das Datum im Format tt.mm.jjjj _
ein. Beispiel: 01.01.2014"
Else
thisUserform.oControl.BackColor = RGB(255, 255, 255)
thisUserform.oControl.ControlTipText = ""
End If
End Sub
Das Problem"thisValidate", das eigentlich ein Steuerelement sein müsste, wird an die Prozedur "IsDate" mit dem Value übergeben und es erscheint eine entsprechende Fehlermeldung (Laufzeitfehler 438), dass das Steuerelement nicht existiert.
Wenn ich in die Textbox einen Buchstaben eingebe, wird thisValidate mit dem Buchstaben übergeben - was natürlich nicht sinnvoll ist.
Was will ich realisieren
Ich würde gern das Steuerelement an die Validierungsprozeduren übergeben, um ein bisschen Code zu sparen und weil in den verschiedenen Eigenschaften (.value, .caption, .tag) für die Verarbeitung wichtige Infos stehen.
Ich freue mich über Unterstützung und Aufklärung, bin dankbar für jeden Hinweis.
Gruß
Erik