Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabelle über Userform Filtern

Forumthread: Tabelle über Userform Filtern

Tabelle über Userform Filtern
24.05.2019 19:47:38
Markus
Hallo Zusammen,
ich versuche immer noch meine Liste über VBA zu filtern, leider bekomme ich es nicht auf die Reihe das die Filterung entsprechend funtionoiert.
Folgende Filter möchte ich ausführen:
1. Wenn in Textbox neben „von:“ ein Datum steht, sollen alle Werte in der Tabelle mit Zahlungseingang nach dem Datum gefiltert werde und anschließend in der Listbox angezeigt werden.
2. Wenn in der Textbox neben „bis:“ ein Datum steht, sollen logischerweise alle Werte in der Tabelle vor dem Datum gefiltert werden und anschließend in der Listbox angezeigt werden.
3. Und zuletzt, wenn beide Textboxen gefüllt sind, sollen alle werte zwischen den Daten angezeigt werden.
Die Codes die ich gefunden habe funktionieren leider nicht wie gewünscht.
Bei größer als wird zwar richtig gefiltert, aber die Fehlermeldung ‚Laufzeitfehler 13‘ kommt.
Bei zwischen wird auch gefiltert, aber leider nicht der gewollte Bereich
Bei kleiner passiert gar nichts und ich erhalte den Laufzeitfehler‘1004‘.
Kann mir jemand bei den Codes weiterhelfen?
Gruß
Markus
https://www.herber.de/bbs/user/130010.xlsm
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle über Userform Filtern
24.05.2019 20:27:36
onur
With und End with lohnen sich nur, wenn sie mehrere Befehle betreffen, sonst machen sie nur unnötigerweise den Code länger.
AW: Tabelle über Userform Filtern
24.05.2019 20:35:51
Markus
Hallo onur,
danke für deine schnelle Antwort!
Das klappt soweit gut!
Gruß Markus
Anzeige
AW: Tabelle über Userform Filtern
24.05.2019 20:34:21
Matthias
Moin!
Das Problem ist, dass du einen leeren String in ein Datum umwandeln willst. Das erzeugt den Fehler. Dort vorher abfragen, ob der string leer ist. Für das Eintragen in die LB musst du jede Zeile durchgehen und prüfen, ob sie ausgeblendet ist. Das sind u.U. viele Zellzugriffe. Da könnte man auch auf das Filtern verzichten und die Daten gleich im Code auswerten. Ist bei großen Daten ggf. schneller. Hier mal dein COde angepasst.
Private Sub CommandButton1_Click()
'filtern
Dim Datum1 As Date
Dim Datum2 As Date
Dim zeilen As Long
Dim aktzeile As Long
Dim bereich()
Me.ListBox1.Clear
zeilen = Sheets("Rechnungen").Cells(Sheets("Rechnungen").Rows.Count, 1).End(xlUp).Row
If TextBox_Date1 = "" And TextBox_Datei2 = "" Then Exit Sub
If TextBox_Date1 = "" Then
Datum2 = TextBox_Date2
With Sheets("Rechnungen")
Rows("1:1").AutoFilter Field:=9, Criterial:="" & CDbl(Datum1)
End With
End If
If TextBox_Date1  "" And TextBox_Date2  "" Then
Datum1 = TextBox_Date1
Datum2 = TextBox_Date2
With Sheets("Rechnungen")
Rows("1:1").AutoFilter Field:=9, Criteria1:=">=" & CDbl(Datum1), Operator:=xlAnd, Criteria2: _
="

VG
Anzeige
AW: Tabelle über Userform Filtern
24.05.2019 20:37:27
Matthias
Hatte ich vergessen. Verschiebe mal die UF in einen Bereich, der beim Filtern nicht ausgeblendet wird. Ansonsten könnte es sein, dass deine UF auch ausgeblendet ist (also der Button).
AW: Tabelle über Userform Filtern
24.05.2019 21:11:39
Markus
Hallo Matthias,
danke für deine Antwort und den Code. Der läuft gut und passt super für meine Anwendung.
Meine ersten Versuche waren schon so gedacht, dass ich ohne die Tabelle zu filtern die Listbox fülle...
Der Wunsch war eigentlich das ich z.B. den Kunde eingebe, die Datumsbereiche eingebe und dann die Listbox entsprechend gefüllt wird. Daran bin ich aber kläglich gescheitert...
Daher habe ich diesen "Umweg" gewählt.
Gruß Markus
Anzeige
AW: Tabelle über Userform Filtern
24.05.2019 21:59:26
Markus
Hallo
ich habe noch ein kleines Problem, passt vtl. nicht ganz zur Ausgansfrage aber:
Ich fülle die Datumsspalte (in meiner richtigen Tabelle) über eine andere Userform mit TextBox.
Die TextBox ist mit "cdate" formartiert. In die Tabelle trägt der Befehl (s.u.) auch das Datum schön ein z.B. 24.05.2019.
Die gesamte Spalte in der betreffenden Tabelle ist auch als Datum formartiert.
Leider erkennt er aber die neue eingetragenen Werte beim filtern nicht als Datum.
Der Befehl zu Eintrag lautet: .Cells(lngrow, 9) = Betrag_erhalten.TextBox_Erhalten.Value
Wie muss ich den Eintrag formatieren, damit er auch beim filtern als Datum erkannt wird?
Gruß Markus
Anzeige
AW: Tabelle über Userform Filtern
24.05.2019 21:59:28
Markus
Hallo
ich habe noch ein kleines Problem, passt vtl. nicht ganz zur Ausgansfrage aber:
Ich fülle die Datumsspalte (in meiner richtigen Tabelle) über eine andere Userform mit TextBox.
Die TextBox ist mit "cdate" formartiert. In die Tabelle trägt der Befehl (s.u.) auch das Datum schön ein z.B. 24.05.2019.
Die gesamte Spalte in der betreffenden Tabelle ist auch als Datum formartiert.
Leider erkennt er aber die neue eingetragenen Werte beim filtern nicht als Datum.
Der Befehl zu Eintrag lautet: .Cells(lngrow, 9) = Betrag_erhalten.TextBox_Erhalten.Value
Wie muss ich den Eintrag formatieren, damit er auch beim filtern als Datum erkannt wird?
Gruß Markus
Anzeige
AW: Tabelle über Userform Filtern
24.05.2019 22:03:18
onur
"Die TextBox ist mit "cdate" formartiert" ?
AW: Tabelle über Userform Filtern
24.05.2019 22:10:14
Markus
Ist wohl falsch ausgedrückt...
ich gebe z.B. in der TextBox ein: "24.05"
und nach Wechsel in eine andere TextBox wird das vollständige Datum eingeschrieben...
so z.B.
Private Sub TextBox_Date2_afterupdate()
TextBox_Date2 = CDate(TextBox_Date2)
End Sub
Diese Datum wird dann in die Tabelle eingetragen, aber wohl leider nicht als Datum...
Anzeige
AW: Tabelle über Userform Filtern
25.05.2019 05:56:58
Werner
Hallo Markus,
die Textbox mußt du auch als Datum in die Zelle übergeben, weil halt eine Textbox Text enthält.
Range("A1") = CDate(TextBox1)
Gruß Werner
AW: Tabelle über Userform Filtern
25.05.2019 06:24:12
Werner
Hallo Markus,
in deinem Fall dann:
.Cells(lngrow, 9) = CDate(Betrag_erhalten.TextBox_Erhalten)
Gruß Werner
Anzeige
AW: Tabelle über Userform Filtern
25.05.2019 06:35:19
Markus
Hallo Werner,
vielen Dank! Jetzt läuft es!
Gruß Markus
Gerne u. Danke für die Rückemldung. o.w.T.
25.05.2019 06:46:14
Werner
;
Anzeige

Infobox / Tutorial

Userform Filter in Excel: Eine praktische Anleitung


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Userform:

    • Erstelle eine Userform in Excel mit zwei TextBoxen für die Datumsangaben (z.B. TextBox_Date1 und TextBox_Date2).
    • Füge einen CommandButton hinzu, um die Filterung auszulösen.
  2. VBA-Code zum Filtern:

    • Verwende den folgenden VBA-Code, um die Tabelle basierend auf den Eingaben in den TextBoxen zu filtern:
    Private Sub CommandButton1_Click()
       Dim Datum1 As Date
       Dim Datum2 As Date
       Dim zeilen As Long
    
       Me.ListBox1.Clear
       zeilen = Sheets("Rechnungen").Cells(Sheets("Rechnungen").Rows.Count, 1).End(xlUp).Row
    
       If TextBox_Date1 = "" And TextBox_Date2 = "" Then Exit Sub
    
       If TextBox_Date1 <> "" Then
           Datum1 = CDate(TextBox_Date1)
       End If
    
       If TextBox_Date2 <> "" Then
           Datum2 = CDate(TextBox_Date2)
       End If
    
       With Sheets("Rechnungen")
           .Rows("1:1").AutoFilter Field:=9, Criteria1:=">=" & Datum1, Operator:=xlAnd, Criteria2:="<=" & Datum2
       End With
    End Sub
  3. Fehlerbehandlung:

    • Achte darauf, dass die TextBoxen nicht leer sind, bevor du versuchst, die Daten zu filtern.

Häufige Fehler und Lösungen

  • Laufzeitfehler 13:

    • Dieser Fehler tritt auf, wenn ein leerer String in ein Datum umgewandelt wird. Stelle sicher, dass die TextBoxen gefüllt sind, bevor du sie in ein Datum umwandelst.
  • Laufzeitfehler 1004:

    • Dieser Fehler kann auftreten, wenn versucht wird, auf eine nicht existierende Zeile oder Spalte zuzugreifen. Überprüfe deine Filterkriterien und den Bereich, den du filterst.
  • Daten werden nicht als Datum erkannt:

    • Wenn du Daten aus einer TextBox in die Tabelle schreibst, stelle sicher, dass du die CDate-Funktion verwendest, um sie als Datum zu formatieren:
    .Cells(lngrow, 9) = CDate(Betrag_erhalten.TextBox_Erhalten.Value)

Alternative Methoden

Falls das Filtern über die Userform nicht die gewünschten Ergebnisse liefert, kannst du auch die Daten direkt im VBA-Code auswerten. Dies kann insbesondere bei großen Datenmengen schneller sein.

For i = 2 To zeilen
   If Cells(i, 9).Value >= Datum1 And Cells(i, 9).Value <= Datum2 Then
       ' Füge den Datensatz zur ListBox hinzu
       Me.ListBox1.AddItem Cells(i, 1).Value ' Beispiel für das Hinzufügen der ersten Spalte
   End If
Next i

Praktische Beispiele

  • Beispiel 1: Filtern nach einem Datum

    • Wenn du nur nach einem bestimmten Datum filtern möchtest, kannst du den Code entsprechend anpassen, um nur Criteria1 zu verwenden.
  • Beispiel 2: Benutzerdefinierte Filter

    • Erlaube dem Benutzer, mehrere Kriterien für die Filterung einzugeben, z.B. Kunde oder bestimmte Zahlungsarten, um die Filtermöglichkeiten zu erweitern.

Tipps für Profis

  • Verwendung von With...End With:

    • Nutze With...End With, um deinen Code übersichtlicher zu gestalten, insbesondere wenn du mehrere Eigenschaften eines Objekts ansprechen musst.
  • Optimierung der Performance:

    • Schalte das Bildschirmupdate aus, während du Daten bearbeitest, um die Performance zu verbessern:
    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Daten in der ListBox korrekt gefiltert werden?
Überprüfe, ob alle Eingaben in den TextBoxen korrekt formatiert sind und dass du die richtigen Filterkriterien anwendest.

2. Welche Excel-Version benötige ich für das Filtern über Userforms?
Die beschriebenen Methoden funktionieren in Excel 2010 und neueren Versionen, da sie VBA unterstützen.

3. Was kann ich tun, wenn die Filter nicht wie gewünscht funktionieren?
Überprüfe deinen Code auf Syntaxfehler und stelle sicher, dass alle Variablen korrekt deklariert sind. Teste auch die Filterkriterien einzeln, um das Problem einzugrenzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige