gleich noch eine Frage hinterher.
Ich habe einen tollen Code im Internet gefunden um Datumsangaben per Klick in einem Kalender auszuwählen.In dem Originalcode wird nur mit einer Ausgabezelle (C4) gearbeitet und das Kalendertool wird mit Klick auf eine Schaltfläche geöffnet.
Diesen Code würde ich gern so verwenden, dass ich auf ein Textfeld klicke und das Kalendertool öffnet sich. Hierbei soll der Name des Textfeldes mitgegeben werden und das ausgewählte Datum soll danach in die Textbox geschrieben werden. So sieht der Originalcode aus:
Public Sub PickDate() 'Aufruf des Tools über eine Schaltfläche
Call DatePick.DatePickinRange(Range("C4"))
End Sub
Und das sind die Programmteile, die den Wert zurückschreiben:Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error GoTo Recover
If Target.Cells.count = 1 Then
If IsDate(Target.value) Then
SF_DatePick.DatePickinRange Target
Cancel = True
Exit Sub
End If
End If
Recover:
End Sub
Public Sub DatePickinRange(DRange As Range, _
Optional FormatTxT As String = "", _
Optional Language As String = "", _
Optional HolidayLocation As String = "", _
Optional ThreeMonthFlag As Boolean = False)
Dim TVar As Variant, DOut As Variant
TVar = DRange.value
If IsDate(TVar) = True Then
DOut = DatePick(CDate(TVar), FormatTxT, Language, HolidayLocation, ThreeMonthFlag)
Else
DOut = DatePick(Now, FormatTxT, Language, HolidayLocation, ThreeMonthFlag)
End If
If DOut = False Then
'Nothing
ElseIf DRange.value DOut Then
DRange.value = DOut
End If
Set TVar = Nothing
Set DOut = Nothing
End Sub
Public Sub DatePickinCtl(InputCtl As Control, _
Optional FormatTxT As String = "dd.mm.yyyy", _
Optional Language As String = "", _
Optional HolidayLocation As String = "", _
Optional ThreeMonthFlag As Boolean = False)
Dim TVar As Variant, DOut As Variant
TVar = InputCtl.value
If IsDate(TVar) = True Then
DOut = DatePick(CDate(TVar), FormatTxT, Language, HolidayLocation, ThreeMonthFlag)
Else
DOut = DatePick(Now, FormatTxT, Language, HolidayLocation, ThreeMonthFlag)
End If
If DOut = False Then
'Nothing
ElseIf InputCtl.value DOut Then
InputCtl.value = DOut
End If
Set TVar = Nothing
Set DOut = Nothing
End Sub
Meine Fragen:
1. Wie kann ich dem befehl den Namen einer Textbox anstelle der Range übergeben?
2. Wie kann ich den ausgewählten Wert wieder in die Textbox zurückschreiben?
Gruß,
PQuest:-)