Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1760to1764
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

Schaltfläche Filtert Auswahl

Schaltfläche Filtert Auswahl
26.05.2020 21:17:01
Lemmy
Hallo zusammen,
ich habe in meinen Suchfeld ab B7 bis B10 mehrere Suchbegriffe hinterlegt.
In der Spalte C7- C10 habe ich in gleicher Anzahl Steuerungslemente abgesetzt 01-04.
Nun möchte ich nach dem Drücken z.B. des Steuerungselement 01 die Auswahl in B20 bis ... Bnn.
Filtern.
Wird nun Steuerngselement 02 gewählt wird der Filter 01 zurückgesetz und der Filter 02 durchgeführt.
Ist im Suchfeld B7-B10 kein inhalt vorhanden soll auch kein Filtern durchgeführt werden.
Der Filter wird nur zurückgesetzt.
https://www.herber.de/bbs/user/137775.xlsx
Vielen Dank für Eure Hilfe im Voraus!
LG
Lemmy

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schaltfläche Filtert Auswahl
26.05.2020 21:39:04
Martin
Hallo Lemmy,
deine Aufgabenstellung ist mit einem kurzen Makro lösbar. Hier die Datei und der Code:
https://www.herber.de/bbs/user/137776.xlsm
Sub Filter()
Dim strSearch As String
strSearch = Cells(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row, 2)
Range(Selection, Selection.End(xlDown)).AutoFilter Field:=1, Criteria1:=strSearch
End Sub
Viele Grüße
Martin
Viele Grüße
Martin
Kleine Ergänzung
26.05.2020 21:55:00
Martin
Hallo Lemmy,
ich hatte überlesen, dass der Filter zurückgesetzt werden soll, falls kein Suchbegriff angegeben ist. Da müsstest du den Code leicht modifizieren:
Sub Filter()
Dim strSearch As String
strSearch = Cells(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row, 2)
With Range(Selection, Selection.End(xlDown))
If Trim(strSearch)  "" Then
.AutoFilter Field:=1, Criteria1:=strSearch
Else
.AutoFilter Field:=1
End If
End With
End Sub
Viele Grüße
Martin
Anzeige
AW: Kleine Ergänzung
26.05.2020 22:06:47
Lemmy
Hallo Matrin,
das sieht ja gut aus.. testen kann ich es im dem "relalen Umfeld" erst morgen!
Vielen Dank für Deine Hilfe!
LG
Lemmy
AW: Kleine Ergänzung
26.05.2020 22:13:08
Martin
Hallo Lemmy,
ich danke dir für die Rückmeldung. Ich werde morgen tagsüber viel unterwegs sein und entweder zwischendurch oder spätestens am späten Nachmittag ggf. noch Änderungen am Makro vornehmen können.
Viele Grüße
Martin
AW: Kleine Ergänzung
27.05.2020 09:18:07
lemmy
Hallo Martin,
könntest Du noch mal Hand anlegen.
Verschiebe ich das Steuerungslement, würde das Makro nicht mehr funktionieren.
Wäre es möglich, einen direkten Zellbezug einzubauen (Suchfeld B7-B10).
D.h. Wenn ich das Steuerungslement 01 verschiebe wird immer die Zelle B7 ausgelesen.
Damit entstehen möglicherweise 4 Makro's mit 4 verschienden Zellabfragen B7,B8,B9 und B10.
...das wäre dann so auch o.k.
Wichtig wäre mir, dass wenn kein Ihnhalt vorhanden ist, das das Makro "nicht" durchläuft.
...das hat den Hintergrund, das ich noch ein Aufzeichnungs-Makro anhängen will.
Der Durchlauf dieses Maktros soll nicht starten wenn die Zelle leer ist.
Wäre das möglich?
LG
Lemmy
Anzeige
AW: Kleine Ergänzung
27.05.2020 19:50:29
Martin
Hallo Lemmy,
jetzt müsste ich schon fast ein wenig beleidigt sein :-)
1. Ich habe mich an deiner Beispielmappe orientiert und bin natürlich davon ausgegangen, dass sich die Steuerelemente stets auf der rechts neben dem Suchbegriff liegenden Zelle befinden.
2. Zudem habe ich eine Lösung mit nur einem einzigen universell einsetzbaren Makro gefunden, das nicht angepasst werden muss. Eine für den Anwender unkompliziertere Lösung ist eigentlich nicht möglich.
Aber trotzdem gibt es noch eine alternative Möglichkeit mit nur einem Makro: Du benennst die Steuerelemente nach den Zelladressen, aber Spalte und Zeile getrennt durch einen Unterstrich (_).
Also heißt das erste Steuerelement "B_7" für die Zelle B7. Dann kannst du die Steuerelemente an beliebigen Stellen im Tabellenblatt positionieren: https://www.herber.de/bbs/user/137814.xlsm
Sub Filter()
Dim strSearch As String
Dim strCmdName As String
strCmdName = ActiveSheet.Shapes(Application.Caller).Name
strSearch = Range(Replace(strCmdName, "_", ""))
With ActiveSheet.Range(Selection, Selection.End(xlDown))
If Trim(strSearch)  "" Then
.AutoFilter Field:=1, Criteria1:=strSearch
Else
.AutoFilter Field:=1
End If
End With
End Sub
Viele Grüße
Martin
Anzeige
...und noch eine Möglichkeit
28.05.2020 07:05:51
Martin
Hallo Lemmy,
du kannst die Zelladresse des Suchbegriffs statt in den Namen des Steuerelementes auch in dessen Eigenschaft Alternativer Text unter Steuerelement formatieren... schreiben, dann brauchst du keinen Unterstrich zu verwenden und das Makro ist einen Tick kürzer:
Sub Filter()
Dim strSearch As String
strSearch = Range(ActiveSheet.Shapes(Application.Caller).AlternativeText)
With ActiveSheet.Range(Selection, Selection.End(xlDown))
If Trim(strSearch)  "" Then
.AutoFilter Field:=1, Criteria1:=strSearch
Else
.AutoFilter Field:=1
End If
End With
End Sub
Viele Grüße
Martin
Anzeige
AW: ...und noch eine Möglichkeit
28.05.2020 11:27:24
lemmy
Hallo Martin,
vielen Dank!
Das Verscheiben des Steuerungslement klappt super!.
Ich habe als nicht VBA Programmierer leider immer noch ein Verstänisproblem.
Ich verstehe nicht ganz wie das Steuerungselement die Zellen auswählt.(B7-B10)
Der Code lässt es zu die Steuerungslement beliebig verschieben. alles super!
Sub Filter()
Dim strSearch As String
Dim strCmdName As String
strCmdName = ActiveSheet.Shapes(Application.Caller).Name
strSearch = Range(Replace(strCmdName, "_", ""))
With ActiveSheet.Range(Selection, Selection.End(xlDown))
If Trim(strSearch)  "" Then
.AutoFilter Field:=1, Criteria1:=strSearch
Else
.AutoFilter Field:=1
End If
End With
End Sub
Verschiebe ich das Suchfeld wird die Zelle als Leerzelle erkannt.
Wäre es möglich im Code die Zelle "B7" dirkt anzusprechen.
So wären es 4 Code's mit vier Verweisen (B7; B8; B9; B10).
Damit leiße sich das Suchfeld ebenfals an eine beliebiege andere Stelle plazieren und ich hätte nur das Bezugfeld anzupassen.Mir würde es auch deshalb so gefallen damit ich eben "sehr einfach" die Zellbeüge anpassen kann.
LG
Lemmy
Anzeige
AW: ...und noch eine Möglichkeit
28.05.2020 11:34:54
Martin
Hallo Lemmy,
wenn es denn unbedingt 4 Makros werden sollen, kannst du die Zellen selbstverständlich auch direkt ansprechen:
Sub Filter1()
strSearch = Range("B7").Text
With ActiveSheet.Range(Selection, Selection.End(xlDown))
If Trim(strSearch)  "" Then
.AutoFilter Field:=1, Criteria1:=strSearch
Else
.AutoFilter Field:=1
End If
End With
End Sub
Viele Grüße
Martin
AW: ...und noch eine Möglichkeit
28.05.2020 12:25:37
lemmy
Hallo Martin,
leider schreibt er mir "Fehler beim Koplilieren" Variable nicht definiert
LG
Lemmy
AW: ...und noch eine Möglichkeit
28.05.2020 12:46:37
Martin
Hallo Lemmy,
da habe ich etwas zu viel vom Code gelöscht ;-)
Die Zeile:
Dim strSearch as String
...muss wieder rein.
Ursprünglich wollte ich ganz auf Variablen verzichten, dann hätte der Code so ausgesehen:
Sub Filter1()
With ActiveSheet.Range(Selection, Selection.End(xlDown))
If Trim(Range("B7").Text)  "" Then
.AutoFilter Field:=1, Criteria1:=Range("B7").Text
Else
.AutoFilter Field:=1
End If
End With
End Sub
Aber dann hättest du die Zelladresse doppelt im Makro anpassen müssen, deshalb hatte ich entschieden doch die Variable strSearch beizubehalten.
Viele Grüße
Martin
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige