HERBERS Excel-Forum - die Dialoge

Thema: Datumsauswahl über ComboBoxes

Home
In ComboBoxes können Jahr, Monat und Tag ausgewählt werden. Monat und Tag starten jeweils mit dem Index 0. Datumsauswahl über ComboBoxes
  • Prozedur: UserForm_Initialize
  • Art: Ereignis
  • Modul: Klassenmodul der UserForm
  • Zweck: Jahre und Monate in ComboBoxes eintragen
  • Ablaufbeschreibung:
    • Variablendeklaration
    • Schleife von 3 Jahre vor dem aktuellen Datum bis 2 Jahre nach dem aktuellen Datum bilden
    • Jahr in Jahres-ComboBox eintragen
    • Schleife über 12 Monate starten
    • 12 Monatsnamen in Monats-ComboBox eintragen
    • 1. Element der Jahres-ComboBox auswählen
    • 1. Element der Monats-ComboBox auswählen
    • Unterprogramm zum Eintragen der Tage aufrufen
  • Code:

    
    Private Sub UserForm_Initialize()
       Dim lDay As Long
       Dim iYear As Integer, iMonth As Integer
       For iYear = Year(Date) - 3 To Year(Date) + 2
          cboYear.AddItem iYear
       Next iYear
       For iMonth = 1 To 12
          cboMonth.AddItem Format(DateSerial(1, iMonth, 1), "mmmm")
       Next iMonth
       cboYear.ListIndex = 0
       cboMonth.ListIndex = 0
       Call SetDays
    End Sub
    
  • Prozedur: SetDays
  • Art: Sub
  • Modul: Klassenmodul der UserForm
  • Zweck: Tage in Tages-ComboBox eintragen
  • Ablaufbeschreibung:
    • Variablendeklaration
    • Tages-ComboBox zurücksetzen
    • Eine Schleife vom ersten bis letzten Tag des Monats bilden
    • Den Tag in die Tages-ComboBox eintragen
    • 1. Element der Tages-ComboBox auswählen
  • Code:

    
    Private Sub SetDays()
       Dim lDay As Long
       cboDay.Clear
       For lDay = DateSerial(cboYear.Value, cboMonth.ListIndex + 1, 1) To _
          DateSerial(cboYear.Value, cboMonth.ListIndex + 2, 0)
          cboDay.AddItem Day(lDay)
       Next lDay
       cboDay.ListIndex = 0
    End Sub
    
  • Prozedur: cboYear_Change
  • Art: Ereignis
  • Modul: Klassenmodul der UserForm
  • Zweck: Tage neu einlesen (damit Schaltjahre berücksichtigt werden)
  • Ablaufbeschreibung:
    • Unterprogramm zum Einlesen der Tage aufrufen
  • Code:

    
    Private Sub cboYear_Change()
       Call SetDays
    End Sub
    
  • Prozedur: cboMonth_Change
  • Art: Ereignis
  • Modul: Klassenmodul der UserForm
  • Zweck: Tage neu einlesen (damit Schaltjahre berücksichtigt werden)
  • Ablaufbeschreibung:
    • Unterprogramm zum Einlesen der Tage aufrufen
  • Code:

    
    Private Sub cboMonth_Change()
       Call SetDays
    End Sub