Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen

Zeilen durch Suchkriterium mit Makro ausblenden

Betrifft: Zeilen durch Suchkriterium mit Makro ausblenden von: MichaelF
Geschrieben am: 09.09.2014 12:23:23

Hallo,

ich habe leider nur wenige VBA-Kenntnisse und mir den folgenden Quellcode aus unterschiedlichen Beiträgen zusammengesetzt. Funktioniert soweit auch, bis auf dass mein Ergebniss genau anders herum ausgegeben werden soll.

Quellcode:

Sub Filtern()
Dim Zelle As Range
Dim Suchen As String
 Suchen = InputBox("Bitte Filterkriterium eingeben?", "Filtern")
Application.ScreenUpdating = False
For Each Zelle In ActiveSheet.UsedRange
If Zelle.Value = Suchen And Rows(Zelle.Row).Hidden = False _
    Then Rows(Zelle.Row).Hidden = True
Next Zelle
Application.ScreenUpdating = True
End Sub
Ich habe eine Tabelle über mehrere Spalten und Zeilen, bei welcher nach Eingabe eines Suchkriteriums (SK) entsprechende Zeilen, in welcher dieses SK vorhanden ist, gefiltert werden sollen, sprich, die anderen Zellen sollen ausgeblendet werden.

Das Makro funktioniert soweit, nur werden hier die Zeilen mit passendem Suchkriterium ausgeblendet (es soll eben genau andersherum).

Zunächst dachte ich, es ließe sich lösen durch einfachen tausch des Operators = gegen <>. Funktioniert aber nicht, da von Zelle zu Zelle gesucht wird. Wird das SK in einer Zeile gefunden, wird nicht automatisch in die nächste Zeile gesprungen, sondern in dieser weitergesucht und sobald das SK nicht mehr vorliegt die Zeile ausgeblendet.

Vielleicht kann mir jemand weiterhelfen?

Danke!

  

Betrifft: AW: Zeilen durch Suchkriterium mit Makro ausblenden von: yummi
Geschrieben am: 09.09.2014 12:36:13

Hallo Michael,
wenn ich dich richtig verstanden habe, dann so


For Each Zelle In ActiveSheet.UsedRange
If Zelle.Value = Suchen And Rows(Zelle.Row).Hidden = True _
    Then Rows(Zelle.Row).Hidden = false
else
    Rows(Zelle.Row).Hidden = True
Next Zelle

Gruß
yummi


  

Betrifft: AW: Zeilen durch Suchkriterium mit Makro ausblenden von: MichaelF
Geschrieben am: 09.09.2014 12:49:53

Danke yummi, nur bekomme ich Fehler beim kompilieren, else ohne if.

Und es müsste <> anstelle = gesetzt werden?


  

Betrifft: AW: Zeilen durch Suchkriterium mit Makro ausblenden von: yummi
Geschrieben am: 09.09.2014 13:18:43

Hallo Michael

For Each Zelle In ActiveSheet.UsedRange
If Zelle.Value = Suchen And Rows(Zelle.Row).Hidden = True Then 
    Rows(Zelle.Row).Hidden = false
else
    Rows(Zelle.Row).Hidden = True
Next Zelle
so müsste der kompilierfehler weg sein.

Das Makro müsste jetzt (ungetestet) folgendes liefern
wenn dein Suchbegriff gefunden wurde, dann wird die Zelle angezeigt bzw wenn versteckt wird sie angezeigt
wenn die Zelle ungleich deinem Suchbegriff wird sie versteckt.

So habe ich dich zumindest verstanden.

Gruß
yummi


  

Betrifft: AW: Zeilen durch Suchkriterium mit Makro ausblenden von: MichaelF
Geschrieben am: 09.09.2014 13:23:08

Leider kommt jetzt Fehler beim Kompilieren next ohne for.

2 Beiträge zuvor findest du eine Bespieldatei, vielleicht hilft die zum Verständnis und Testen.


  

Betrifft: AW: Zeilen durch Suchkriterium mit Makro ausblenden von: MichaelF
Geschrieben am: 09.09.2014 13:19:38

Ich habe einmal eine Beispieldatei erzeugt.

Filtert man nach "AA" werden alle Zeilen mit "AA" ausgeblendet.
Ich benötige es jedoch genau anders herum.

Datei: https://www.herber.de/bbs/user/92544.xlsm


  

Betrifft: AW: Zeilen durch Suchkriterium mit Makro ausblenden von: yummi
Geschrieben am: 09.09.2014 13:39:25

Hallo Michael,

so wie du es hattest, hast du die die Zeile immer wieder versteckt, wenn du nach der Zelle mit AA noch eine Zelle ohne AA gefunden hast.
Ich hab es etwas umgestellt.

https://www.herber.de/bbs/user/92545.xlsm

Gruß
yummi


  

Betrifft: AW: Zeilen durch Suchkriterium mit Makro ausblenden von: MichaelF
Geschrieben am: 09.09.2014 13:48:57

:o)

Ja, das Problem hatte ich so auch erkannt, aber leider nicht das Wissen, dieses zu beheben.
Vielen Dank!!!, so funktioniert es.

In diesem Zusammenhang jedoch noch 2 Fragen:
- Bestünde noch die Möglichkeit, Groß-/Kleinschreibung zu ignorieren?
- Nicht nur den exakten Suchbegriff zu filtern (Wildcards), zB. als Suchkriterium nicht AA sondern nur A und es werden alle Zeilen mit A* gefiltert?


  

Betrifft: AW: Zeilen durch Suchkriterium mit Makro ausblenden von: yummi
Geschrieben am: 09.09.2014 13:56:09

Hallo Michael,

1.Fall: If UCase(ActiveSheet.Cells(i, j).Value) = UCase(Suchen) Then

2.Fall: if InStr(1,UCase(ActiveSheet.Cells(i, j).Value),UCase(Suchen)) <> 0 Then

Gruß
yummi


  

Betrifft: AW: Zeilen durch Suchkriterium mit Makro ausblenden von: MichaelF
Geschrieben am: 09.09.2014 14:01:36

Sehr geil! Vielen vielen Dank :o)

Jetzt muss es nur noch in meiner richtigen Tabelle funktionieren.


  

Betrifft: AW: Zeilen durch Suchkriterium mit Makro ausblenden von: MichaelF
Geschrieben am: 09.09.2014 14:35:41

Hab jetzt ein wenig probiert, leider funktioniert es, für mich nicht nachvollziehbar, unter gewissen Umständen nicht.

https://www.herber.de/bbs/user/92548.xlsm

Filtert man nach "fg", "l" oder "On" kommt ein falsches Ergebnis zustande.

Eine Idee, wieso?


  

Betrifft: AW: Zeilen durch Suchkriterium mit Makro ausblenden von: MichaelF
Geschrieben am: 09.09.2014 14:46:29

Offen markiert vergessen zu klicken, sry.


  

Betrifft: kleiner Fehler :-) von: yummi
Geschrieben am: 09.09.2014 14:59:54

Hallo Michael,

mach mal bitte so rum ;-) dann stimmt auch der Name

    iletzteSpalte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
    lletzteZeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Gruß
yummi


  

Betrifft: AW: kleiner Fehler :-) von: MichaelF
Geschrieben am: 09.09.2014 15:21:55

YES. Funktioniert. Nochmal besten Dank!


  

Betrifft: AW: Zeilen durch Suchkriterium mit Makro ausblenden von: yummi
Geschrieben am: 09.09.2014 14:55:41

Hallo Michael,

ich bin davon ausgegangen dass du eine "vernünftige" Tabelle hast und nicht die WErte wild verteilt sind
Ändere mal:

    iletzteSpalte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    'iletzteSpalte = ActiveSheet.Cells(4, 256).End(xlToLeft).Column
Dann sucht er die letzte Splate nicht nur in Zeile 4

Gruß
yummi


 

Beiträge aus den Excel-Beispielen zum Thema "Zeilen durch Suchkriterium mit Makro ausblenden"