AW: Userform - Datumseingabe - Label formatieren
30.07.2012 16:26:20
fcs
Hallo Tim,
Frage 1:
Ein direktes Format gibt es nicht, man kann aber steuern, welche Zeichen eingegeben werden können und beim Verlassen der Textbox prüfen, ob die Eingabe ein gültiges Datum ist.
Dabei kann ähnlich wie bei Zellen eine verkürzte Eingabe verwendet werden( 3.8 wird zu 3.8.2012).
Dazu müssen im Userform-Code entsprechende Ereignismakros für die Text-Box angelegt werden.
Bei vielen gleichartigen Textboxen sollte man entsprechende Klassen-Module für gleichartige Textboxen anlegen. Dazu sollte dann bei den Namen der Textboxen eine Systematik mit eindeutigem Namen + fortlaufender Nr. verwendet werden.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Textbox-Wert auf gültiges Datum prüfen
With Me.TextBox1
If IsDate(.Value) Then
.Value = Format(CDate(.Value), "DD.MM.YYYY")
Else
Cancel = True
MsgBox "Eingabe in dieser Textbox muss ein gültiges Datum sein!"
End If
End With
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Nur Punkt und Ziffern als Eingabe für Datum zulassen
Select Case KeyAscii
Case Asc(0) To Asc(9), Asc(".")
'zulässige Zeichen für Datumseingabe
Case Else
KeyAscii = 0
End Select
End Sub
Frage 2:
Hierzu im Userform eine entsprechende Prozedur anlegen, die die Werte prüft und die Labelschriftfarbe anpasst. Diese Prozedur startest du zum Beispiel in der Initialisierungs-Prozedur des Userforms.
Private Sub UserForm_Initialize()
Call ChangeLabelColors
End Sub
Private Sub ChangeLabelColors()
Dim wks As Worksheet
Set wks = Worksheets("Blatt2")
With Me.Label441
If wks.Range("B11").Value = "XXX" Then .ForeColor = &HFF& Else .ForeColor = &H80000012
End With
With Me.Label202
If wks.Range("B12").Value = "YYY" Then .ForeColor = &HFF& Else .ForeColor = &H80000012
End With
End Sub
Gruß
Franz