Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1792to1796
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabellenblatt ein- ausblenden per Filter

Tabellenblatt ein- ausblenden per Filter
19.11.2020 12:57:21
Philipp
Hallo,
ich möchte anhand meiner Auswahl im Filter "Hauptgruppe" im Tabellenblatt "Master" alle anderen Tabellenblätter ausblenden, die nicht der Auswahl entsprechen (außer das Sheet "Meta")
In der Beispieldatei wäre die Auswahl dann z.B. "A" und alle Tabellenblätter, die nicht mit "A" beginnen sollen ausgeblendet werden, bis auf das Tabellenblatt "Meta"
Hier die Beispiel Datei:
https://www.herber.de/bbs/user/141700.xlsx
und hier der Post den ich schon gefunden habe, aber den ich leider nicht adaptieren kann, da meine VBA Kenntnisse nicht so prall sind :(
https://www.herber.de/forum/archiv/1588to1592/1591928_Tabellenblatt_ein_und_ausblenden_per_DropDown.html#1591928
Ich hatte zwar schon über die Makro Aufzeichnung herausgefunden, wie ich die entsprechene Zelle Abfrage und (irgend-)ein Sheet ausblende, aber das ganze funktioniert nur auf Knopfdruck und nicht automatisch per Änderung in der Filterauswahl.
Vielen Dank schon mal und Gruß
Philipp

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt ein- ausblenden per Filter
19.11.2020 15:48:07
Henrik

Sub TabellenblätterFiltern()
Dim rngRow As Range
Dim ws As Worksheet
Dim varArr() As String
Dim intI As Integer
Dim rngBereich As Range
Set rngBereich = ActiveSheet.Range("B6:E14") 'kann natürlich vorher dynamisch deklariert  _
werden, z.B. über usedrange, wenn alle Rahmenbedingungen passen.
intI = 0
'Alle sichtbaren Hauptgruppen in Array schreiben
For Each rngRow In rngBereich.Rows
If rngRow.Hidden = False Then
ReDim Preserve varArr(intI)
varArr(intI) = rngRow.Cells(1, 1)
intI = intI + 1
End If
Next
'Alle Tabellenblätter durchlaufen (Schleife 1) und für jedes Tabellenblatt vergleichen, ob  _
der linke Buchstabe des TAbellenblatts mit dem des Eintrags im Array übereinstimmt (2. Schleife)
For Each ws In Worksheets
If ws.Name = ActiveSheet.Name Then GoTo nextfor
For intI = 0 To UBound(varArr)
If varArr(intI) = Left(ws.Name, 1) Then
If ws.Visible = False Then
ws.Visible = True
GoTo nextfor
End If
Else
If ws.Visible = True Then ws.Visible = False
End If
Next
nextfor:
Next
End Sub

https://www.herber.de/bbs/user/141708.xlsm
Anzeige
AW: Tabellenblatt ein- ausblenden per Filter
19.11.2020 15:51:28
Yal
Hallo Philipp,
wandelt zuerst deine Liste in Tabelle mit Strg+t. Du kannst in Formel >> Namen den Name in etwas passender umstellen. Ich habe "BlattListe" verwendet. Es ist hilfreich, weil eine "Tabelle" ergänzt sich von selbst und muss im Coding nicht neujusteiert werden.
Der Code blendet alle weggefilterten Tabellen aus. Das Auslösen wird durch ein Ereignis gemacht. Kann man auch per Knopfdruck machen.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim R, W
On Error Resume Next
'versteckt agieren
Application.ScreenUpdating = False
'Alle Tabelle sichtbar machen
For Each R In ThisWorkbook.Worksheets
R.Visible = True
Next
'wenn Zeile ausfiltert (hidden = True), ausblenden (Visible = False => Not True)
For Each R In Me.Range("BlattListe").Rows
Set W = ThisWorkbook.Worksheets(Me.Cells(R.Row, 2) & "_" & Me.Cells(R.Row, 3))
W.Visible = Not R.EntireRow.Hidden
Next
'Ergebnis sichtbar machen
Application.ScreenUpdating = True
End Sub
Lese den Code und versuche zu verstehen, was da passiert. So erhöhst Du nach und nach deien VBA-Kenntnisse.
Viel Erfolg
Yal
Anzeige
AW: Tabellenblatt ein- ausblenden per Filter
19.11.2020 18:25:19
Philipp
Hallo vielen Dank für eure Lösungsvorschläge!
@Yal:
Ich habe die Liste in eine Tabelle umgewandelt und diese mit "Übersicht" benannt. Dementsprechend habe ich auch deinen Code angepasst.
Wenn ich den Filter ändere (z.B. nur nach Hauptgruppe A filtern) sollte der Code ja ausgelöst werden, das funktioniert aber nur, wenn ich die Tabelle größer oder kleiner ziehe oder einen Wert in der Tabelle ändere. Liegt es vielleicht am trigger Worksheet_Change oder am Target? Ich möchte dass der Code nur ausgeführt wird, wenn ich in "B5" den Filter anwende und nicht, wenn ich in der Tabelle etwas eintrage.
Noch eine Verständnis Frage: Wie hast du es angestellt, dass der Sheet "Meta" nicht ausgeblendet wird? das kann ich aus dem Code nicht erkennen.
Worksheets(Me.Cells(R.Row, 2) & "_" & Me.Cells(R.Row, 3))
sucht doch nach Sheets, deren Benennung sich aus Hauptgruppe_Untergruppe zusammensetzt oder? Trotzdem Startet der Code immer im ersten Durchlauf bei dem 3. Sheet.
https://www.herber.de/bbs/user/141712.xlsm
@Henrik:
Leider funktioniert dieser Code nicht mehr, wenn ich die Hauptgruppe z.B. in HauptA umbenenne (und auch entsprechend den Sheet).
Gruß
Philipp
Anzeige
AW: Tabellenblatt ein- ausblenden per Filter
19.11.2020 19:07:30
Henrik
Nein, er funktioniert nicht mehr, wenn du das machst. Irgendwie musst du ja die Namen der Tabellenblätter mit den Einträgen unter "Hauptgruppe" abgleichen. In diesem Beispiel vergleichst du "A" mit dem ersten Buchstaben von links. Das macht die Zeile
If varArr(intI) = Left(ws.Name, 1) Then
Die Transferleistung ist jetzt also, die Funktion left() so anzupassen, dass auch z.B. "HauptA" funktioniert. Tipp: Es sind insgesamt 5 Buchstaben von links immer gleich.
AW: Tabellenblatt ein- ausblenden per Filter
19.11.2020 21:50:39
Simon
Hallo Philipp,
alles richtig interpretiert.
Mein Vorschlag basiert auf die Idee, dass nicht nur die erste Spalte gefiltert werden könnte, sondern auch die zweite. in deinem Aufstellung hat es Sinn gemacht.
Wenn es nur um die erste Buchstabe ist Henrik Lösung passender.
Der Trigger auf die Änderung der Tabelle ist "Worksheet_TableUpdate" und startet nur wenn sich an der Tabelle sich was ändert ausser filtern. Leider.
VG Yal
Anzeige

168 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige