Moin.
Die Datumsangaben in den Bereichen ergeben sich aus Formeln, z. B.:
für 1. Januar
für 31. Januar
Code:
=WENNFEHLER(WENN(MONAT(K34+1)=MONAT(K$5);K34+1;"");"")
Die Formeln sind zwingend erforderlich, da die ganze Kiste nach Eingabe der Jahreszahl in F4 jedes Jahr wieder benutzt werden muss. Datumsformat in den Bereichen ist nur TT.
Das ist im Groben die Jahresübersicht von Andreas Thehos (
https://www.youtube.com/watch?v=6Ou1SD6dAkg), nur dass die Formeln etwas abweichen und statt der einen monatlichen Spalte für Feiertage/Ereignisse mehrere Spalten für Orte vorhanden sind.
Übernommen werden die Daten bei Initialisierung der UserForm so:
Code:
Dim UnionRange As Range
Dim Cell As Range
Set UnionRange = Union(Range("Ort1_Jan"), Range("Ort1_Feb"), Range("Ort1_Mrz"), Range("Ort1_Apr"), Range("Ort1_Mai"), Range("Ort1_Jun"), Range("Ort1_Jul"), Range("Ort1_Aug"), Range("Ort1_Sep"), Range("Ort1_Okt"), Range("Ort1_Nov"), Range("Ort1_Dez"))
For Each Cell In UnionRange
If Not IsEmpty(Cell) Then
ComboBox_Datumswahl.AddItem Cell.Offset(0, -2).Value
End If
Next Cell
ComboBox_Datumswahl = Format(ComboBox_Datumswahl, "dd.mm.yy")
(Das If Not IsEmpty und Offset (0, -2) rührt daher, dass in den Bereichen nur die Zellen mit Eintrag ausgewertet werden sollen und dann jeweils zwei Spalten weiter links das Datum geholt werden soll.)
Übergabe in die aktive Zelle habe ich so zusammengewurschtelt:
Code:
Private Sub Button_Uebernehmen_Click()
Unload Me
'übernimmt den Ort in die rechte benachbarte Zelle
If OptionButton_Ort1.Value = True Then ActiveCell.Offset(0, 1).Value = OptionButton_Ort1.Caption
If OptionButton_Ort2.Value = True Then ActiveCell.Offset(0, 1).Value = OptionButton_Ort2.Caption
If OptionButton_Ort3.Value = True Then ActiveCell.Offset(0, 1).Value = OptionButton_Ort3.Caption
If OptionButton_Ort4.Value = True Then ActiveCell.Offset(0, 1).Value = OptionButton_Ort4.Caption
If OptionButton_OrtSonstige.Value = True Then ActiveCell.Offset(0, 1).Value = OptionButton_OrtSonstige.Caption
'übernimmt das gewählte Datum in die markierte Zelle
ActiveCell.Value = ComboBox_Datumswahl.Value
'markiert linke benachbarte Zelle, weil erneutes Aufrufen der UserForm durch Anklicken der bereits markierten Zelle nicht funktioniert (SelectionChange benötigt Zellenwechsel)
ActiveCell.Offset(0, -1).Select
End Sub
(ActiveCell.Offset(0, -1).Select hat seinen Ursprung darin, dass die UserForm immer mit Klick in die gewünschte Zelle aufgerufen wird, was ja bei Linksklick nur mit SelectionChange funktioniert. Wenn man danach z. B. für Korrektur die UserForm nochmal aufrufen will und in dieselbe Zelle klickt, passiert nichts, da ja kein SelectionChange vorliegt. Das erspart sozusagen einmal das Klicken in eine andere Zelle, bevor man wieder die gewünschte Zelle anklickt.)
Ohne „ComboBox_Datumswahl = Format(ComboBox_Datumswahl, "dd.mm.yy")“ wird das Datum als TT.MM.JJJJ in die ComboBox geladen und so in die Zielzellen weitergegeben.
Alle als Zielzellen in Frage kommenden haben das Zahlenformat „14.03.12“, also TT.MM.JJ. Ich habe auch schon verschiedene andere Zahlenformate in den Zielzellen probiert,
aber das Zahlenformat der Zielzellen wird komplett ignoriert, egal was ich dort vorgegeben habe. Händisch in die Zellen eingegebene Werte werden wie gewünscht nach TT.MM.JJ formatiert.