Userform Kalender
25.10.2022 08:49:58
David
Hallo Ralf (?),
(in der Zeit, als ich hier noch regelmäßig mitgemacht habe, war es Usus, in Beiträgen eine Anrede etc. zu schreiben. Aber der allgemeine "Verfall" der Umgangsformen hat wohl hier leider auch schon Einzug gefunden. Schade!)
danke. Dass ich von anderen Usern bereitgestellte Lösungen selbst suche, ist mir klar. Die Frage war aber, ob es etwas von MS als Nachfolger der alten Variante gibt. Ich lese mal aus deiner Antwort: nein.
Ich habe mir aus einem anderen Beitrag eine Userform kopiert und angefangen, diese für meine Bedürfnisse anzupassen. Dabei will ich den Code nicht nur stumpf kopieren, sondern auch verstehen. Dabei habe ich aktuell folgendes Problem:
Die Userform hat folgenden Code:
Private Sub UserForm_Initialize()
Dim iCounter As Integer
Dim Tag As Integer
'Jahr.Caption = Year(Now)
'Combobox mit Monaten füllen
For iCounter = 1 To 12
Monat.AddItem Format(DateSerial(1, iCounter, 1), "mmmm")
Next iCounter
For iCounter = -5 To 5
Jahr.AddItem Year(Date) + iCounter
Next
Monat.ListIndex = Month(Date) - 1 'aktuellen Monat vorbelegen
Jahr.ListIndex = 5 'aktuelles Jahr vorbelegen
Tag = Day(Now)
With Me("Tag" & Format(Tag, "0"))
.Font.Bold = True
.BackColor = &HFFFF&
End With
MsgBox Jahr
Call Datum_ermitteln
End Sub
Im aufgerufenene Makro dann folgendes:
Sub Datum_ermitteln()
Dim X As Byte, letzterTag As Byte
A = DateValue("1 " & UserForm1.Monat & " " & UserForm1.Jahr)
letzterTag = Day(DateSerial(Year(A), Month(A) + 1, 0))
ersterMontag = A - Day(A) - Weekday(A - Day(A), vbMonday) + 8
If Day(ersterMontag + 1)
Was ich derzeit nicht verstehe, ist die Zeile
A = DateValue("1 " & UserForm1.Monat & " " & UserForm1.Jahr)
Hier wird mir als Monat der aktuelle Monat zurückgeliefert. Als Jahr bekomme ich allerdings "" anstatt des aktuellen Jahres. In der Initialisierung gleichen sich die beiden Comboboxen aus meiner Sicht. Es wird jeweils nur der Wert des aktuellen Datums vorbelegt und sonst nichts weiter definiert. Warum bekomme ich im Makro das Jahr nicht zurückgeliefert?
Danke und Gruß
David