AW: userform textfeld kalender!
16.10.2009 07:51:03
fcs
Hallo Lisa,
bei Zahlen- oder Datumswerten in Textboxen müssen diese Textwerte vor dem Eintragen in Zellen umgewandelt werden. Die Zelle fprmatierst du im gewünschten Format.
Den Textboxen kannst du kein Format mitgeben, du kannst "nur" die Eingabe in der Textbox-Exit-Ereignisprozedur auf Fehler prüfen.
Gruß
Franz
Beispiel für Umwandlung der Textboxinhalte in Zelleinträge.
Private Sub CommandButton1_Click()
Dim z As Long
Dim wks As Worksheet
Set wks = ActiveSheet
z = 1
Do While Cells(z, 1) ""
z = z + 1
Loop
'wks.Cells(z, 2) = Calendar1.Value
If fncDouble(Zelle:=wks.Cells(z, 5), Wert:=Me.TextBox3.Value, _
FeldName:="XYZ-Wert", OptionClear:=True) = False Then
GoTo Eingabe_korrigieren
End If
If fncDatum(Zelle:=wks.Cells(z, 3), Wert:=Me.TextBox4.Value, _
FeldName:="ABC-Wert", LeerZulaessig:=False) = False Then
GoTo Eingabe_korrigieren
End If
Unload Me
Eingabe_korrigieren:
End Sub
Function fncDouble(Zelle As Range, Wert As String, FeldName As String, _
Optional OptionClear As Boolean, _
Optional LeerZulaessig As Boolean = True) As Boolean
'Eintragen von Zahlenwerten aus Text-Steuerelementen in Tabelle
'OptionClear: bei True wird Zellinhalt ggf. gelöscht wenn Wert="", sonst _
als Wert 0 in die Zelle eingtragen
'LeerZulaessig: Wenn True, dann darf die Textbox leergelassen werden.
fncDouble = True
If Wert = "" And LeerZulaessig = True Then
If OptionClear = True Then
Zelle.ClearContents
Else
Zelle = 0
End If
ElseIf IsNumeric(Wert) Then
Zelle.Value = CDbl(Wert)
Else
MsgBox "Für """ & FeldName & """ muss eine Zahl eingegeben werden"
fncDouble = False
End If
End Function
Function fncDatum(Zelle As Range, Wert As String, FeldName As String, _
Optional LeerZulaessig As Boolean = True) As Boolean
'Eintragen von Datums-/Zeitwerten aus Text-Steuerelementen in Tabelle
'LeerZulaessig: Wenn True, dann darf die Textbox leergelassen werden.
fncDatum = True
If Wert = "" And LeerZulaessig = True Then
Zelle.ClearContents
ElseIf IsDate(Wert) Then
'CDate wandelt den Inhalt der Textbox in ähnlicher Form um , wie Eingaben _
in Tabellenzellen umgesetzt werden. In Grenzen sind also verkürtzte _
Datumseingaben zulässig.
Zelle = CDate(Wert) 'für Datum/Zeit
Else
MsgBox "Für """ & FeldName & """ muss ein gültiges Datum eingegeben werden"
fncDatum = False
End If
End Function