Hallo Andreas,
am einfachsten ist es natürlich, du machst in deine Userform 3 Textfelder für gesuchten Tag, Monat und Jahr.
Suchst du z.B. nur den Monat und das Jahr, schreibst du nur in diese Textboxen etwas herein.
Du musst dann für die einzelnen Suchbedingungen (ganzes Datum, nur Monat und Jahr, nur Monat) entsprechende Schleifen programmieren.
Hier mal ein Beispiel (das Datum steht in Spalte A ab Zeile 2, alle Zeilen, die nicht den ausgewählten Suchkriterien entsprechen werden ausgeblendet:
Private Sub CommandButton1_Click()
Dim intTag As Integer
Dim intMonat As Integer
Dim intJahr As Integer
Dim lngLetzte As Long
Dim lngZeile As Long
'letzte Zeile im aktuellen Tabellenblatt in Spalte A suchen
lngLetzte = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
If TextBox1.Value <> "" Then
intTag = CInt(TextBox1.Value)
Else
intTag = 0
End If
If TextBox2.Value <> "" Then
intMonat = CInt(TextBox2.Value)
Else
intMonat = 0
End If
If TextBox3.Value <> "" Then
intJahr = CInt(TextBox3.Value)
Else
intJahr = 0
End If
'ganzes Datum suchen
If intTag > 0 And intMonat > 0 And intJahr > 0 Then
For lngZeile = 2 To lngLetzte
'alle Zellen ausblenden, die nicht dem gesuchten Datum entsprechen
If Cells(lngZeile, 1).Value <> DateSerial(intJahr, intMonat, intTag) Then Rows(lngZeile).EntireRow.Hidden = True
Next lngZeile
End If
'nur Monat und Jahr suchen
If intTag = 0 And intMonat > 0 And intJahr > 0 Then
For lngZeile = 2 To lngLetzte
'alle Zellen ausblenden, die nicht dem gesuchten Monat und Jahr entsprechen
If Month(Cells(lngZeile, 1)) <> intMonat Or Year(Cells(lngZeile, 1)) <> intJahr Then Rows(lngZeile).EntireRow.Hidden = True
Next lngZeile
End If
'nur Monat suchen
If intTag = 0 And intMonat > 0 And intJahr = 0 Then
For lngZeile = 2 To lngLetzte
'alle Zellen ausblenden, die nicht dem gesuchten Monat entsprechen
If Month(Cells(lngZeile, 1)) <> intMonat Then Rows(lngZeile).EntireRow.Hidden = True
Next lngZeile
End If
'Userform schließen
Unload Me
End Sub
Gruß
M.O.