Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Filter in Tabelle per VBA setzen

Filter in Tabelle per VBA setzen
20.08.2020 13:05:10
Johnnn
Grüße an alle,
Ich bin ein wenig aufgeschmissen & hoffentlich kann mir hier jemand helfen. Im Folgenden will ich lediglich eine Variable aus Sheet A kopieren und nach diesem Wert in meiner Tabelle in Sheet B filtern. Sheet A ist also quasi ein Dashboard in dem man Werte einträgt & die einem dann in Sheet B angezeigt werden. Das ganze findet im gleichen Workbook statt
Ich habe mir also folgenden VBA-Code geschrieben:
Dim KriteriumA As String
KriteriumA = Workbooks("JF_Agenda_Vorlage.xlsm").Worksheets("Dashboard").Cells(4, 8)
Workbooks("Jf_Agenda_Vorlage.xlsm").Worksheets("Agenda").Select
Selection.End(xlUp).Select
ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=2, Criteria1:=KriteriumA
Jedoch wird die Tabelle in Sheet B immer nach "Leer" gefiltert, obwohl in der entsprechenden Zelle ein Wert eingetragen ist.... Was mache ich falsch?
LG
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filter in Tabelle per VBA setzen
20.08.2020 13:35:54
Werner
Hallo,
den Umweg über eine Variable brauchst du doch gar nicht, du kannst doch den Filterbegriff direkt aus der Zelle holen.
Für was das .End(xlup) gut sein soll, erschließt sich mir nicht.
Kann es sein, dass du bei deiner Cells Angabe Zeilennummer und Spaltennummer verwechselst?
Cells(4, 8) = Zelle D8
Public Sub Filter_kopieren()
With Worksheets("Agenda")
If WorksheetFunction.CountIf(.Columns(2), Worksheets("Dashboard").Cells(4, 8)) > 0 Then
.ListObjects("Tabelle1").Range.AutoFilter Field:=2, Criteria1:=Cells(4, 8)
.Activate
Else
MsgBox "Fehler: Der Suchbegriff " & Cells(4, 8) & " wurde im Blatt Agenda nicht  _
gefunden."
End If
End With
End Sub
Gruß Werner
Anzeige
AW: Filter in Tabelle per VBA setzen
20.08.2020 13:50:06
Johnnn
Vielen Dank für deine Antwort.
Das .End(xlup) kam durch den Makro-Recorder, ich hatte mir den letzten Teil des Codes aus diesem herausgezogen. Die Angaben der Zeilen- & Spaltennummern habe ich nicht verwechselt, in diesem konkreten Fall geht es tatsächlich um die Zelle "D8".
Vielen Dank auch für deinen Code, es scheint jedoch, dass Excel den Wert aus Zelle D8 im Worksheet "Dashboard" nicht in der Tabelle1 im Worksheet "Agenda" findet... ich bekomme jedenfalls eine Fehlermeldung ausgewiesen, obwohl entsprechende Werte, in der entsprechenden Spalte der Tabelle hinterlegt sind. Ich habe auch andere Werte in der Zelle D8 eingetragen, ich bekomme in jedem Fall eine Fehlermeldung ausgeworfen. Hat jemand eine Idee woran das liegen könnte?
Viele Grüße,
Anzeige
AW: Filter in Tabelle per VBA setzen
20.08.2020 13:51:27
Werner
Hallo,
wahrscheinlich an den Daten, die wir aber nicht kennen.
Lad mal deine Mappe hier hoch.
Gruß Werner
AW: Filter in Tabelle per VBA setzen
20.08.2020 14:02:43
Johnnn
Anbei die Excel, ich habe die Spalten mal mit Dummy-Daten befüllt, dürfte aber dem Zweck keinen Abbruch tun. https://www.herber.de/bbs/user/139728.xlsm
Vielen Dank für die Hilfe!
LG
Anzeige
AW: Filter in Tabelle per VBA setzen
20.08.2020 14:33:29
Werner
Hallo,
oh Mann, jetzt hab ich mich von dir schon anstecken lassen.
Du hast den Suchbegriff in D8 und das ist Cells(8, 4) und nicht Cells(4, 8)
Gruß Werner
AW: Filter in Tabelle per VBA setzen
20.08.2020 14:37:45
Johnnn
Oh man! Jetzt funktioniert der Code :D
Vielen Dank für deine Geduld!
Gerne u. Danke für die Rückmeldung. o.w.T.
20.08.2020 20:43:38
Werner
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Filter in Tabelle per VBA setzen


Schritt-für-Schritt-Anleitung

Um einen Filter in einer Tabelle per VBA zu setzen, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.
  2. Erstelle ein neues Modul:
    • Klicke mit der rechten Maustaste auf "VBAProject (deinWorkbookName)".
    • Wähle Einfügen > Modul.
  3. Füge den VBA-Code ein:

    Public Sub Filter_kopieren()
       Dim KriteriumA As String
       KriteriumA = Worksheets("Dashboard").Cells(8, 4).Value ' Zelle D8
    
       With Worksheets("Agenda")
           If WorksheetFunction.CountIf(.Columns(2), KriteriumA) > 0 Then
               .ListObjects("Tabelle1").Range.AutoFilter Field:=2, Criteria1:=KriteriumA
           Else
               MsgBox "Fehler: Der Suchbegriff " & KriteriumA & " wurde im Blatt Agenda nicht gefunden."
           End If
       End With
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.
  5. Führe das Makro aus: Drücke ALT + F8, wähle Filter_kopieren und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Der Filter zeigt "Leer" an: Überprüfe, ob der Suchbegriff in der entsprechenden Zelle tatsächlich vorhanden ist. Achte darauf, dass du die richtige Zelle angibst (z.B. Cells(8, 4) für D8).

  • Fehlermeldung bei nicht gefundenem Wert: Stelle sicher, dass der Wert in der Zelle exakt mit den Werten in der Spalte übereinstimmt (z.B. keine zusätzlichen Leerzeichen).

  • Falsches Arbeitsblatt: Vergewissere dich, dass du das richtige Arbeitsblatt angibst, in diesem Fall "Dashboard" und "Agenda".


Alternative Methoden

Neben der Verwendung von VBA gibt es auch alternative Methoden, um Daten in Excel zu filtern:

  • Autofilter-Funktion in Excel: Du kannst den Autofilter direkt über die Excel-Oberfläche aktivieren, um manuell zu filtern.

  • Datenbankfunktionen: Excel bietet verschiedene Datenbankfunktionen wie DBSUM, DBCOUNT, etc., die bei der Analyse von gefilterten Daten hilfreich sein können.


Praktische Beispiele

Hier sind ein paar praktische Beispiele für das Filtern von Daten in Excel mit VBA:

  1. Filtern nach mehreren Kriterien:

    .ListObjects("Tabelle1").Range.AutoFilter Field:=2, Criteria1:=Array("Wert1", "Wert2"), Operator:=xlFilterValues
  2. Filtern von Daten basierend auf einem Zellwert:

    Dim Suchbegriff As String
    Suchbegriff = Worksheets("Suchblatt").Cells(1, 1).Value
    .ListObjects("Tabelle1").Range.AutoFilter Field:=1, Criteria1:=Suchbegriff

Tipps für Profis

  • Code optimieren: Verwende With-Blöcke, um den Code zu optimieren und die Lesbarkeit zu erhöhen.

  • Fehlerbehandlung: Implementiere eine einfache Fehlerbehandlung, um den Benutzer über mögliche Probleme zu informieren.

  • Makros speichern: Speichere deine Makros in einer Personal Macro Workbook-Datei, um sie in allen Excel-Arbeitsmappen verwenden zu können.


FAQ: Häufige Fragen

1. Wie aktiviere ich den Autofilter in Excel mit VBA?
Du kannst den Autofilter aktivieren, indem du den folgenden Code verwendest:

Worksheets("Tabelle1").Range("A1").AutoFilter

2. Was mache ich, wenn meine Filterkriterien nicht funktionieren?
Überprüfe die Schreibweise und das Format der Daten in der Zelle, die du als Filterkriterium verwendest. Achte darauf, dass keine Leerzeichen vorhanden sind.

3. Kann ich mehrere Filter gleichzeitig setzen?
Ja, du kannst mehrere Filterkriterien in einem Array angeben, um mehrere Werte zu filtern.

4. Wie kann ich einen Filter zurücksetzen?
Um einen Filter zurückzusetzen, kannst du den folgenden Code verwenden:

.ListObjects("Tabelle1").AutoFilter.ShowAllData

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige