Thema Datum  Von Nutzer Rating
Antwort
Rot Monats Kalender über Userform
27.05.2025 19:59:50 Beneti
NotSolved
27.05.2025 21:57:51 Gast16549
NotSolved
31.05.2025 22:28:09 Gast20793
NotSolved

Ansicht des Beitrags:
Von:
Beneti
Datum:
27.05.2025 19:59:50
Views:
304
Rating: Antwort:
  Ja
Thema:
Monats Kalender über Userform

Guten Abend,

 

Ich habe über das Userform einen Monatskalender mit zwei Buttons links und rechts erstellt, um die Monate vor- und zurückzublättern. Außerdem soll der Monat im Format „Januar 2025“ angezeigt werden. Momentan habe ich jedoch ein Problem: Die Monate von März bis August werden im Format „Mai 2025“ angezeigt, während die Monate von August bis Februar des nächsten Jahres nur im Format „Januar“ (ohne Jahr) dargestellt werden. Ich möchte jedoch, dass alle 12 Monate im Format „Monat, Jahr“ angezeigt werden. Hier ist der komplette Code, den ich verwendet habe:

 

Private Sub KalenderAnzeigen(ByVal monat As Integer, ByVal Jahr As Integer)
    
   Dim korrektesDatum As Date
    Dim ersterTag As Date
    Dim startTag As Integer
    Dim tageImMonat As Integer
    Dim i As Integer
    Dim tagNummer As Integer
    Dim cmd As MSForms.CommandButton
    Dim aktuellesDatum As Date
    Dim wochentag As Integer
    Dim iHeute As Integer

    ' --- Monat & Jahr aus sicherem Datum ableiten ---
    korrektesDatum = DateSerial(Jahr, monat, 1)
    monat = Month(korrektesDatum)
    Jahr = Year(korrektesDatum)

    ' --- Monatsüberschrift anzeigen --- lblMonatJahr ist Name des Beschriftungfelds wo das Monat und Jahr angezeigt werden soll
    lblMonatJahr.Caption = Format(korrektesDatum, "MMMM YYYY")

    ' --- Wochentage setzen ---
    Dim wochentage As Variant
    wochentage = Array("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So")
    For i = 0 To 6
        Me.Controls("lblWochentag" & (i + 1)).Caption = wochentage(i)
    Next i

    ' --- Daten vorbereiten ---
    ersterTag = korrektesDatum
    startTag = Weekday(ersterTag, vbMonday)
    tageImMonat = Day(DateSerial(Jahr, monat + 1, 0))

    ' --- Buttons zurücksetzen ---
    For i = 1 To 42
        Set cmd = Me.Controls("cmdTag" & i)
        With cmd
            .Caption = ""
            .Visible = False
            .Enabled = False
            .BackColor = RGB(240, 240, 240)
            .Font.Bold = False
            .ForeColor = RGB(0, 0, 0)
        End With
    Next i

    ' --- Tage eintragen ---
    For i = 1 To tageImMonat
        tagNummer = i + startTag - 1
        Set cmd = Me.Controls("cmdTag" & tagNummer)
        aktuellesDatum = DateSerial(Jahr, monat, i)
        wochentag = Weekday(aktuellesDatum, vbMonday)

        With cmd
            .Caption = i
            .Visible = True
            .Enabled = True

            ' --- Farbliche Hervorhebung ---
            If aktuellesDatum = Date Then
                .BackColor = RGB(67, 205, 128) ' Heute
            ElseIf wochentag = 6 Then
                .BackColor = RGB(255, 220, 180) ' Samstag
            ElseIf wochentag = 7 Then
                .BackColor = RGB(255, 170, 170) ' Sonntag
            Else
                .BackColor = RGB(240, 240, 240) ' Normal
            End If
        End With
    Next i

    ' --- Heute markieren und fokussieren ---
    If monat = Month(Date) And Jahr = Year(Date) Then
        iHeute = Day(Date) + startTag - 1
        If iHeute >= 1 And iHeute <= 42 Then
            With Me.Controls("cmdTag" & iHeute)
                If .Visible Then
                    .SetFocus
                    .Font.Bold = True
                    .ForeColor = RGB(0, 100, 0)
                    .ControlTipText = "Heute: " & Format(Date, "dddd, dd.mm.yyyy")
                End If
            End With
        End If
    End If
    
End Sub

 

Ich freue mich auf Ihre Unterstützung!


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Monats Kalender über Userform
27.05.2025 19:59:50 Beneti
NotSolved
27.05.2025 21:57:51 Gast16549
NotSolved
31.05.2025 22:28:09 Gast20793
NotSolved