Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Nur sichtbare Zellen verwenden

Nur sichtbare Zellen verwenden
14.09.2015 14:12:59
Sven
Hi zusammen,
mal wieder eine Frage an die Community.
Wie kann ich einen Bereich definieren der nur sichtbare Zellen berücksichtigt?
Hiermit fülle ich meine Listbox, würde die Ergebnisse aber gerne auf sichtbare Zellen beschränken.

Set rng = Worksheets("Tabelle2").Range("T4:AC1000").Cells.SpecialCells(xlCellTypeVisible).Find  _
_
(xSuche, LookAt:=xlPart, LookIn:=xlValues)
If Not rng Is Nothing Then
With Worksheets("Tabelle2")
xErste = rng.Address(False, False)
y = True
Do Until xAdresse = xErste
ReDim Preserve arr(0 To 3, 0 To iRowU)
arr(0, iRowU) = .Cells(rng.Row, 1)
arr(1, iRowU) = .Cells(rng.Row, 2)
arr(2, iRowU) = .Cells(rng.Row, 3)
arr(3, iRowU) = .Cells(rng.Row, 4)
iRowU = iRowU + 1
Set rng = .Range("T4:AC1000").FindNext(After:=rng)
xAdresse = rng.Address(False, False)
Loop
xAdresse = ""
xErste = ""
End With
End If
Jemand eine Idee? mit specialcells(xlcelltypevisible) funktioniert es nicht :(
Danke vorab und beste Grüße
Sven

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Nur sichtbare Zellen verwenden
14.09.2015 14:20:34
Arthur
Hallo Sven.
Soweit ich weiß erkennst du ausgeblendete Zeilen/ Spalten an deren Höhe/ Breite. Wenn die = 0 ist, dann einfach überspringen.
Gruß, Arthur

AW: Nur sichtbare Zellen verwenden
14.09.2015 15:11:54
Sven
Hi Arthur,
vielen Dank für die schnelle Antwort.
Aber irgendwie scheint

.find
nicht damit zurecht zukommen.
Set rng = Worksheets("Tabelle2").Range("T4:AC1000").Find _
(xSuche, LookAt:=xlPart, LookIn:=xlValues).RowHeight = 0 
VBA sagt: Objekt erforderlich.
Hinter den .Range Befehl kann ich es ja nicht setzen da .find dann nicht mehr arbeiten will.
Denkfehler? Oder muss ich tatsächlich eine übergeordnete Abfrage machen?
Nochmal Danke vorab.
Gruß
Sven

Anzeige
AW: Nur sichtbare Zellen verwenden
14.09.2015 16:47:01
Werner
Hallo Sven,
keine Ahnung ob es funktioniert, kann derzeit nicht testen. Versuch doch mal anstatt
With Worksheets("Tabelle2")

With Worksheets("Tabelle2").Cells.SpecialCells(xlCellTypeVisible)
Gruß Werner

Anzeige
AW: Nur sichtbare Zellen verwenden
15.09.2015 12:36:53
Sven
Hallo Werner,
sorry für die späte Rückmeldung.
Das habe ich auch bereits ausprobiert. VBA meckert zwar nicht, liefert aber auch nicht die richtigen Ergebnisse.
Vielen Dank für deinen Versuch.
So schwer kann es doch eigentlich nicht sein.
Ich probiere weiter ... never give up ;)
Danke
Gruß
Sven

Anzeige
AW: Nur sichtbare Zellen verwenden
16.09.2015 11:25:10
Werner
Hallo Sven,
also mit dem Code-Teil den du hier gezeigt hast füllst du ein Array und keine Listbox. Das Array wird auch korrekt befüllt -auch wenn Zeilen ausgeblendet oder durch Filtern ausgeblendet sind-.
Kannst ja hiermit mal ein wenig testen, die entsprechenden Einträge des Arrays werden in Message-Boxen ausgegeben.
Public Sub test()
Dim Rng As Range
Dim xErste As Variant
Dim xAdresse As Variant
Dim iRowU As Long
Dim xSuche As Variant
Dim arr()
xSuche = InputBox("Suchbegriff:", "Suchen")
Set Rng = Worksheets("Tabelle1").Range("A1:E20").Cells.SpecialCells(xlCellTypeVisible).Find _
_
(xSuche, LookAt:=xlPart, LookIn:=xlValues)
If Not Rng Is Nothing Then
With Worksheets("Tabelle1")
xErste = Rng.Address(False, False)
Do Until xAdresse = xErste
ReDim Preserve arr(0 To 3, 0 To iRowU)
arr(0, iRowU) = .Cells(Rng.Row, 1)
arr(1, iRowU) = .Cells(Rng.Row, 2)
arr(2, iRowU) = .Cells(Rng.Row, 3)
arr(3, iRowU) = .Cells(Rng.Row, 4)
MsgBox arr(0, iRowU) & " iRowU " & iRowU
MsgBox arr(1, iRowU) & " iRowU " & iRowU
MsgBox arr(2, iRowU) & " iRowU " & iRowU
MsgBox arr(3, iRowU) & " iRowU " & iRowU
iRowU = iRowU + 1
Set Rng = .Range("A1:E20").FindNext(After:=Rng)
xAdresse = Rng.Address(False, False)
Loop
xAdresse = ""
xErste = ""
End With
End If
End Sub
Gruß Werner
Der Fehler wird wohl eher daran liegen wie du die Daten aus dem Array in deine Listbox schreibst.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Nur sichtbare Zellen in Excel verwenden


Schritt-für-Schritt-Anleitung

Um nur sichtbare Zellen in Excel zu verwenden, kannst Du den folgenden VBA-Code nutzen. Dieser Code sucht nach einem bestimmten Begriff in einem definierten Bereich und berücksichtigt dabei nur die sichtbaren Zellen.

  1. Öffne den VBA-Editor (Alt + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Public Sub SucheNachSichtbarenZellen()
    Dim Rng As Range
    Dim xErste As Variant
    Dim xAdresse As Variant
    Dim iRowU As Long
    Dim xSuche As Variant
    Dim arr()

    xSuche = InputBox("Suchbegriff:", "Suchen")
    Set Rng = Worksheets("Tabelle1").Range("A1:E20").Cells.SpecialCells(xlCellTypeVisible).Find _
        (xSuche, LookAt:=xlPart, LookIn:=xlValues)

    If Not Rng Is Nothing Then
        With Worksheets("Tabelle1")
            xErste = Rng.Address(False, False)
            Do Until xAdresse = xErste
                ReDim Preserve arr(0 To 3, 0 To iRowU)
                arr(0, iRowU) = .Cells(Rng.Row, 1)
                arr(1, iRowU) = .Cells(Rng.Row, 2)
                arr(2, iRowU) = .Cells(Rng.Row, 3)
                arr(3, iRowU) = .Cells(Rng.Row, 4)
                iRowU = iRowU + 1
                Set Rng = .Range("A1:E20").FindNext(After:=Rng)
                xAdresse = Rng.Address(False, False)
            Loop
            xAdresse = ""
            xErste = ""
        End With
    End If
End Sub
  1. Starte das Makro, indem Du F5 drückst.

Dieser Code wird alle sichtbaren Zellen im Bereich A1:E20 durchsuchen und die Ergebnisse in einem Array speichern.


Häufige Fehler und Lösungen

  1. Fehler: Objekt erforderlich

    • Dieser Fehler tritt auf, wenn Du versuchst, mit einer nicht existierenden Range oder Zelle zu arbeiten. Stelle sicher, dass der Suchbegriff tatsächlich in den sichtbaren Zellen vorhanden ist.
  2. Problem: Keine Ergebnisse

    • Überprüfe, ob die Filter in der Tabelle aktiv sind. Wenn keine Zellen sichtbar sind, wird der Code keine Ergebnisse finden.
  3. VBA sagt: .Find funktioniert nicht

    • Achte darauf, dass Du die SpecialCells(xlCellTypeVisible) korrekt anwendest, um nur die sichtbaren Zellen zu berücksichtigen.

Alternative Methoden

Eine weitere Möglichkeit, um nur sichtbare Zellen zu verwenden, ist die Verwendung von Excel-Formeln, um die Daten vor der Verarbeitung zu filtern. Du kannst beispielsweise die AGGREGAT-Funktion nutzen, um nur sichtbare Werte zu summieren oder zu zählen.

=AGGREGAT(3, 5, A1:A100)

Hier wird die Anzahl der sichtbaren Zellen im Bereich A1:A100 gezählt.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du den VBA-Code anpassen kannst, um die sichtbaren Zellen in eine Listbox zu füllen:

With UserForm1.ListBox1
    .Clear
    For i = 0 To UBound(arr, 2)
        .AddItem arr(0, i)
        .List(.ListCount - 1, 1) = arr(1, i)
        .List(.ListCount - 1, 2) = arr(2, i)
        .List(.ListCount - 1, 3) = arr(3, i)
    Next i
End With

In diesem Beispiel wird die Listbox mit den sichtbaren Werten gefüllt, die im Array gespeichert sind.


Tipps für Profis

  • Überlege, die Find-Methode zu optimieren, indem Du eine Fehlerbehandlung einfügst, um sicherzustellen, dass Dein Code robust ist.
  • Nutze die Application.ScreenUpdating = False-Anweisung, um die Bildschirmaktualisierung während des Makroablaufs zu deaktivieren, was die Ausführung beschleunigt.
  • Wenn Du häufig mit sichtbaren Zellen arbeitest, erwäge, eine Funktion zu erstellen, die Du immer wieder verwenden kannst.

FAQ: Häufige Fragen

1. Wie kann ich die sichtbaren Zellen in eine andere Tabelle kopieren?
Du kannst den gleichen Ansatz verwenden und die Copy-Methode für die sichtbaren Zellen nutzen:

Worksheets("Tabelle1").Cells.SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("Tabelle2").Range("A1")

2. Funktioniert der Code in Excel Online?
Leider funktioniert VBA nicht in Excel Online. Du musst die Desktop-Version von Excel verwenden, um diesen Code auszuführen.

3. Was mache ich, wenn mein Bereich sehr groß ist?
In solchen Fällen ist es ratsam, den Bereich zu optimieren oder die UsedRange-Eigenschaft zu verwenden, um die Leistung zu verbessern.

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