Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1876to1880
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

sichtbare Zeilen

sichtbare Zeilen
04.04.2022 15:43:56
Thomas
Hallo Excelfreunde,
ich kann mit dem untenstehenden Makro bestimmte Zeilen ausblenden.
Nun versuche ich gerade das Makro so umzuschreiben das nur in den sichtbaren Zeilen gesucht wird.
mit
Set sBereich = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
'sBereich.EntireRow.Hidden = True
klappt es leider nicht.
Ich erhalte zwar keine Fehlermeldung, aber es wird auch nichts gefunden.
Hat jemand einen Rat für mich?
Habt schon mal rechtvielen dank für euer interesse.
mfg thomas

Sub suchen_alles()
Dim sBereich As Range, sZeile As Range, sZelle As Range
Dim such As String
Application.ScreenUpdating = False
such = "***" & LCase(InputBox("Was suchst du?")) & "****"
If such = "**" Then 'wenn nichts eingegeben wird, werden alle Zeilen eingeblendet
Rows.Hidden = False
Exit Sub
End If
Set sBereich = ActiveSheet.UsedRange
'Set sBereich = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
sBereich.EntireRow.Hidden = True
sBereich.Range("1:4").EntireRow.Hidden = False 'Zeilen, die immer sichtbar bleiben
For Each sZeile In sBereich.Rows
For Each sZelle In sZeile.Cells
If LCase(sZelle) Like such Then
sZeile.Hidden = False
Exit For
End If
Next sZelle
Next sZeile
'Application.Goto Cells(1, ActiveCell.Column)
Application.Goto ActiveSheet.Range("A1"), True
Application.ScreenUpdating = True
Set sBereich = Nothing
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: sichtbare Zeilen
04.04.2022 15:59:45
Rudi
Hallo,

If such = "**" Then
wenn nichts eingegeben wird ist such= "*******".

Nun versuche ich gerade das Makro so umzuschreiben das nur in den sichtbaren Zeilen gesucht wird.
warum suchst du dann nicht in 1:4?
Ich glaube eher, du willst in den ausgeblendeten Zeilen suchen, dann was hätte das

If LCase(sZelle) Like such Then
sZeile.Hidden = False
Exit For
End If
sonst für einen Sinn?
Gruß
Rudi
AW: sichtbare Zeilen
04.04.2022 16:04:04
ChrisL
Hi Thomas
Vielleicht nicht das einzige Problem, aber...
Prüfe mal die Variable bei fehlender Eingabe:

such = "***" & LCase(InputBox("Was suchst du?")) & "****"
MsgBox such
Darum kann die Wenn-Bedingung (If such = "**" ) nicht eintreten.
Hier mal ein Ansatz:
Sub t()
Dim such As Variant
such = LCase(Application.InputBox("*** Was suchst du? ****"))
If such = False Then
MsgBox "Abbruch"
Exit Sub
ElseIf such = "" Then
MsgBox "Leer"
'einblenden
Exit Sub
End If
'weiter
End Sub
cu
Chris
Anzeige
AW: sichtbare Zeilen
04.04.2022 16:05:16
ChrisL
Tags (Formatierung) vergessen

Sub t()
Dim such As Variant
such = LCase(Application.InputBox("*** Was suchst du? ****"))
If such = False Then
MsgBox "Abbruch"
Exit Sub
ElseIf such = "" Then
MsgBox "Leer"
'einblenden
Exit Sub
End If
'weiter
End Sub

AW: sichtbare Zeilen
04.04.2022 16:15:49
guenni
Hi Thomas,
verdächtig sind schon mal die Sternchen. Gerne werden sie beim Vergleich als Platzhalter für beliebige Wortteile verwendet.
Such = "**" würde dann immer wahr sein
hab's nicht ausprobiert, ist nur ein Verdacht.
AW: sichtbare Zeilen
04.04.2022 17:31:45
Thomas
Hallo Excelfreunde,
erst mal rechtvielen dank das ihr euch dies angeschaut habt.
Ich habe es wieder dumm erklärt sorry.
Man kann mit diesem Makro nach einem bestimmten Begriff ( z.B. Tom ) suchen. Es werden alle Zeilen ausgeblendet in denen dieser Begriff Tom nicht gefunden wird.
Außer die ersten 4 Zeilen bleiben immer stehen.
Dies funktioniert super. Nun möchte ich gern das Ergebnis weiter verfeinern und das Makro ein zweites Mal starten. Und dann als Suchbegriff
z.B. Berlin eingeben. Dieses " Berlin" soll jedoch nur in den jetzt noch sichtbaren Zeilen gesucht werden. Danach sollen nur noch die Zeilen sichtbar sein in denen Tom und Berlin stehen.
Da die Begriffe in immer verschiedenen Spalten stehen können ist dies mit den Filter sehr mühsam.
In der Beispieltabelle habe ich mal das "Wunschergebnis" eingestellt.
https://www.herber.de/bbs/user/152238.xlsm
Wenn man keinen Suchbegriff eingibt werden alle Zeilen wieder eingeblendet.
könnt ihr nochmal schauen?
Ich hoffe ich habe es jetzt besser erklärt.
mfg thomas
Anzeige
AW: sichtbare Zeilen
04.04.2022 18:09:50
GerdL
Moin Thomas!

Sub suchen_alles()
Dim Zeile As Range, Zelle As Range
Dim such As String
Dim blnSichtbar As Boolean
Application.ScreenUpdating = False
such = LCase(InputBox("Was suchst du?"))
If such = "" Then 'wenn nichts eingegeben wird, werden alle Zeilen eingeblendet
Rows.Hidden = False
Exit Sub
End If
For Each Zeile In ActiveSheet.Range(ActiveSheet.Cells(5, 1), ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell)).Rows
If Zeile.Hidden = False Then
blnSichtbar = False
For Each Zelle In Zeile.Cells
If LCase(Zelle) Like such Then
blnSichtbar = True
Exit For
End If
Next sZelle
Zeile.Hidden = Not blnSichtbar
End If
Next Zeile
Application.Goto ActiveSheet.Range("A1"), True
Application.ScreenUpdating = True
End Sub
Gruß Gerd
Anzeige
AW: sichtbare Zeilen
04.04.2022 19:00:19
Thomas
Hallo GerdL,
das klappt super. Hab rechtvielen vielen dank für deine Lösung.
Hast du vielleicht noch ein kleinen Trick wie man deine Lösung etwas schneller bekommen kann?
mfg thomas
AW: sichtbare Zeilen
04.04.2022 20:00:56
ChrisL
Hi Thomas
Den Zusammenhang mit dem Tabellenblatt "testdaten" sehe ich momentan nicht. Vielleicht kannst du mal aufzeigen, wie sich die Tabelle1 zusammensetzt. Aus anderer Quelle (vielleicht testdaten)? Wiederholen sich die Spalten Customer, City etc. noch öfters und immer im gleichen Rhythmus? Können die Namen tatsächlich unterschiedlich sein oder ergibt es sich bereits anhand des Schlüssels/ID?
Beschränkt sich die Suche auf bestimmte Felder/Spalten? Ist es immer 2x filtern?
Ich denke in die Richtung der folgenden Lösungsansätze:
- Quelldaten nutzen, um die ID zu ermitteln
- Generell über die Datenstruktur nachzudenken. Die sich wiederholenden Spalten sind hübsch, aber ungünstig fürs Filtern. Darum die Nachfrage zu den Quelldaten, vielleicht ginge die Suche dort einfacher/strukturierter.
- Suchbereich eingrenzen (z.B. einzelne Spalten ausschliessen)
- Eigener Suchdialog (Userform mit Textboxen) erstellen, wo es zugewiesene Felder gibt (z.B. Textbox Customer, Textbox City etc.), so dass im Voraus klar ist, welche Spalte durchsucht werden muss
Klar könnte man die Laufzeit auch einfach so optimieren (mit Array und so), aber ist m.E. dennoch ungünstig, wenn mit der groben Keule jeder Wert einzeln verglichen wird.
cu
Chris
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige