Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Filtermaske

Forumthread: Filtermaske

Filtermaske
16.07.2024 16:45:10
Stefe
Hallo Experten Team,

es befindet sich ein Listobject (Tbl_Übersicht) auf dem Blatt "Filter". Mit den Spalten Halle (1-3), Bühne E1-4, G1-4, Ö1-4, W1-4) , Bereich (1-2). Eine Userform mit der man Filtern kann, z.b. in der Spalte "Bühne" alles mit "G" unabhängig von der Zahl dahinter.
Es sollen mehrfachauswahlen möglich sein.
Es funktioniert soweit aber wenn ein angewählter Begriff z.b. für Spalte "Bühne" nach "G" und für Spalte "Halle" nach Halle2 oder nur nach Halle4 gefiltert werden soll aber die Texte garnicht in der Tabelle stehen, sind nach dem klicken "Bestätigung" garkeine Daten mehr sichtbar. Es soll nur gefiltert werden, wenn der Begriff auch vorhanden ist.Wenn in Spalte "Bereich" nach 1 gefiltert wird, erscheint trotzdem ein eintrag obwohl keine 1 drin steht.
Ich hoffe ihr könnt mir Helfen.

Bsp.Datei:
https://www.herber.de/bbs/user/171039.xlsm


Herzlichst Stefe
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filtermaske
16.07.2024 18:00:19
Alwin Weisangler
Hallo,

für die Spalte Hallen so:


Private Sub Bestätigen_Check_Click()
Dim i&, k&, arr()
For i = 1 To 4
If Controls("Check_H" & i) = True Then
k = k + 1
ReDim Preserve arr(1 To k)
arr(k) = CStr(i)
End If
Next i
If k > 0 Then
Blatt_Filter.ListObjects("Tbl_Übersicht").Range.AutoFilter Field:=1, _
Criteria1:=arr, Operator:=xlFilterValues
Else
Blatt_Filter.ListObjects("Tbl_Übersicht").Range.AutoFilter Field:=1
End If
Unload Me
End Sub

Die weiteren Spalten kannst du es dann nach diesem Prinzip selbst weiterbauen.

Gruß Uwe
Anzeige
AW: Filtermaske
16.07.2024 18:48:02
Alwin Weisangler
Ich war etwas voreilig. Die Spalte Bühne braucht eine andere Vorgehensweise.
Das wäre ohne Spalte "Bereich" dann so:


Private Sub Bestätigen_Check_Click()
Dim i&, j&, k&, arr(), arrChk(), zelle As Range, tmp, objDic As Object: arrChk = Array("Check_E", "Check_Ö", "Check_G", "Check_W")
Blatt_Filter.ListObjects("Tbl_Übersicht").Range.AutoFilter Field:=1
Blatt_Filter.ListObjects("Tbl_Übersicht").Range.AutoFilter Field:=2
For i = 1 To 4
If Controls("Check_H" & i) = True Then
k = k + 1
ReDim Preserve arr(1 To k)
arr(k) = CStr(i)
End If
Next i
If k > 0 Then
Blatt_Filter.ListObjects("Tbl_Übersicht").Range.AutoFilter Field:=1, _
Criteria1:=arr, Operator:=xlFilterValues
Else
Blatt_Filter.ListObjects("Tbl_Übersicht").Range.AutoFilter Field:=1
End If

' Spalte Bühne muss anders herangegangen werden
Erase arr
Set objDic = CreateObject("Scripting.Dictionary")
For Each zelle In Blatt_Filter.ListObjects(1).DataBodyRange.Columns(2).SpecialCells(xlVisible)
objDic(zelle.Text) = 0
Next
tmp = objDic.keys
k = 0
For i = 1 To 4
If Controls(arrChk(i - 1)) = True Then
For j = 0 To UBound(tmp)
If InStr(1, tmp(j), Right(arrChk(i - 1), 1), vbTextCompare) > 0 Then
k = k + 1
ReDim Preserve arr(1 To k)
arr(k) = tmp(j)
End If
Next j
End If
Next i
If k > 0 Then
Blatt_Filter.ListObjects("Tbl_Übersicht").Range.AutoFilter Field:=2, _
Criteria1:=arr, Operator:=xlFilterValues
Else
Blatt_Filter.ListObjects("Tbl_Übersicht").Range.AutoFilter Field:=2
End If
Unload Me
End Sub


Gruß Uwe
Anzeige
AW: Filtermaske
17.07.2024 19:41:57
Stefe
Hallo Alwin,

konnte es jetzt erst testen. Danke für deine schnelle Hilfe.
Das ist mal ein Code, den muss ich noch ein paarmal schritt für Schritt durchgehen um den so einigermassen zu verstehen. Aber es macht Spaß.
Bräuchte in 2 Punkten nochmal deine Hilfe.

1. Wenn nach Halle 4 gefilter wird, die aber noch nicht in der Tabelle steht werden alle Daten ausgeblendet und es kommt Laufzeitfehler 1004.
Habe versucht eine Msgbox einzublenden. Hat tatsächlich funktioniert aber die Filter haben dann nicht mehr richtig funktioniert.

2. Hab versucht den Bereich 1 und 2 zu integrieren, doch leider ohne erfolg.

BSP.Datei:
https://www.herber.de/bbs/user/171078.xlsm

Herzlichst Stefe
Anzeige
AW: Filtermaske
16.07.2024 18:11:35
Yal
Hallo Stefe,

warum einen komplizierten Userform? Es reicht, wenn Du die Standardfunktion "erweiterte Filter" verwendest.

Füge in deinem Blatt 3 neue Zeile vor der Zeile 1
kopiere die Überschriften Halle, Buhne, Bereich von jetzt B5:D5 in B1:D1
Schreibe in C2 "G*",
im Menü "Daten", "erweiterte Filter" starten,
als Listenbereich "tbl_Übersicht" einstellen,
als Kriterienbereich B1:D2 auswählen,
entweder an selbe Stelle, dann wird die Liste gefiltert, oder als Kopie, dann zielstelle auswählen.

Beim zweiten Verwendung der erw. Filter werden die erste Einstellungen wieder vorgeschlagen.

Das Verwenden der erw. Filter kann man auch aufzeichnen. So hättest Du den VBA-Code dazu.

VG
Yal
Anzeige
AW: Filtermaske
18.07.2024 21:26:29
daniel
Hallo
probier mal das.

sieht jetzt nicht ganz so professionell aus (keine Userform)
aber es funktionier genau so, wie du dir das wünschst.
die Auswahl der Elemente erfolgt in der kleinen Tabelle oberhalb.
um den Filter zu aktivieren, klicke den zu filternden Wert mit der rechten Maustaste an.
für mehrfachauswahl innerhalb einer Spalte wähle die Werte mit linker Maustaste und gehaltener STRG-Taste aus und klicke dann diese Zellen mit der rechten Maustaste an.
du kannst so auch gleich in mehreren Spalten Werte auswählen, bevor du den Filter startest

hier die Datei für deine ältere Excelversion.
https://www.herber.de/bbs/user/171114.xlsm
achtung, hier funktioniert die aktualisierung der Filterwerte nur, wenn man über das Makro filtert und nicht, wenn man Autofilter normal bedient.


und hier die Datei für Excel 365.
https://www.herber.de/bbs/user/171115.xlsm

Anzeige
AW: Filtermaske
19.07.2024 20:39:28
Stefe
Hey daniel,

Danke dir für deine Lösung.
Funktioniert genauso!
Das wäre auf jedenfall auch eine gute Variante für mich.

Sehr interessant dein Programm code, den werde ich mir auch noch
zu gemüte führen und versuchen zu verstehen.

Herzlichst
Stefe
AW: Filtermaske
17.07.2024 19:44:44
Stefe
Hallo Yal,

Danke für die schnelle antwort. Habe es mal mit dem Erw.Filter ausprobiert.Wenn Nach Halle 1 und 2 gefiltert werden soll müssen 2 Zeilen für den Kriterienbereich angelegt werden. Wird nun aber nur nach Halle1 gefiltert funktioniert es nicht mehr.Dann muss der Kriterienbereich wieder auf eine Zeile angepaßt werden.
So ist es jedenfalls bei mir.

Habe eine neue Bsp.Datei hochgeladen wo ich den Advanced Filter Benutze
Schau mal ob du es so gemeint hast.

Herzlichst Stefe
Anzeige
AW: Filtermaske
17.07.2024 22:47:36
Alwin Weisangler
Hallo,

ich hab mal Nägel mit Köpfen gemacht. Den Button brauchst du eigentlich nicht. Wenn Halle 4 fehlt reicht es den Fehler mit "On Error Resume Next" abzufangen.
Ich hab die Checkboxen einer Klasse zugewiesen, so dass sofort auf die Einstellungen des Filters reagiert wird.
https://www.herber.de/bbs/user/171082.xlsm

Gruß Uwe
Anzeige
AW: Filtermaske
18.07.2024 19:07:53
Stefe
Hallo Alwin,

das ist wirklich gut Programmiert. Vielen Dank nochmal an dich. Eine Sache ist mir noch aufgefallen die aber nicht Störend ist. Wenn zuerst nach nach W in "Bühne" und anschließend nach Halle 3 gefiltert wird, erscheinen erst alle einträge mit W und anschließend wird Halle 3 noch zusätzlich angezeigt. Im Autofilter ist es ja so das wenn man z.b alles mit W ausgewählt hat, steht die auswahl Halle 3 garnicht zur verfügung, da es ja Kein W in Halle 3 gibt.
Wünsche Dir noch einen schönen Tag!

Herzlischst Stefe
Anzeige
;

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