Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: nur sichtbare Zellen in Array speichern

nur sichtbare Zellen in Array speichern
16.08.2006 15:36:31
Romi
Hallo,
ich habe in meinem Datenblatt die Daten nach einem bestimmten Wert per Autofilter gefiltert. So sehe ich nur Zeilen 11,12,27,28.
Nun will ich diese sichtbaren Zellen auswerten in meinem Makro.Versucht habe ich das, indem ich die sichtbaren Zellen in ein Array schreibe und dieses dann weiter behandle (es geht sicher auch direkt ohne Array, aber wie?):
array_visible = ActiveSheet.Range(Cells(1, 1), Cells(210, 30)).SpecialCells(xlCellTypeVisible).Cells
Allerdings werden dann nur die ersten zusammenhängenden Zeilen gespeichert, also Zeilen 11 und 12 - und leider nicht Zeilen 27 und 28 mit.
Wie kann man diese auch erreichen?
Danke,
Romi
PS: Habe das Forum schon durchstöbert und bin somit auf dieses "SpecialCells(xlCellTypeVisible) gestoßen, nur war das leider nur ein Teilerfolg.
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nur sichtbare Zellen in Array speichern
16.08.2006 16:01:39
Dan
Hallo Romi, versuch es direkt mit dem AutoFilter-Range. Hier ein Beispiel. Gruss Dan, cz
Option Explicit
' array_visible = ActiveSheet.Range(Cells(1, 1), Cells(210, 30)).SpecialCells(xlCellTypeVisible).Cells

Sub AF_Test()
Dim ce As Range
Dim AF As AutoFilter
Set AF = ActiveSheet.AutoFilter
If (Not AF Is Nothing) Then
' so kann man z.B. die sehbaren zellen faerben:
For Each ce In AF.Range.SpecialCells(xlCellTypeVisible)
ce.Interior.ColorIndex = 20
Next ce
End If
End Sub

Anzeige
AW: nur sichtbare Zellen in Array speichern
16.08.2006 16:11:50
Romi
Danke, das hilft mir schonmal weiter.
Nun will ich eigentlich gar nicht jede Zelle des sichtbaren Bereichs durchgehen, sondern immer nur die 1.Zelle jeder Zeile (das heißt also die erste Spalte). Wie kann ich das noch angeben?
Romi
AW: nur sichtbare Zellen in Array speichern
16.08.2006 16:16:22
Dan
Dann z.B so:
Option Explicit
' array_visible = ActiveSheet.Range(Cells(1, 1), Cells(210, 30)).SpecialCells(xlCellTypeVisible).Cells

Sub AF_Test()
Dim ce As Range
Dim AF As AutoFilter
Set AF = ActiveSheet.AutoFilter
If (Not AF Is Nothing) Then
' so kann man z.B. die sehbaren zellen faerben:
For Each ce In AF.Range.Columns(1).SpecialCells(xlCellTypeVisible)
ce.Interior.ColorIndex = 20
Next ce
End If
End Sub

Anzeige
Perfekt!
16.08.2006 16:22:10
Romi
Perfekt, vielen Dank!!!
Romi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Nur sichtbare Zellen in Array speichern


Schritt-für-Schritt-Anleitung

Um nur die sichtbaren Zellen in ein Array zu speichern, kannst du die folgende Vorgehensweise nutzen. Dieses Beispiel basiert auf dem Autofilter in Excel und erfordert Kenntnisse in VBA.

  1. Öffne dein Excel-Dokument und aktiviere den Visual Basic for Applications (VBA) Editor (Alt + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf „VBAProject“ > Einfügen > Modul).
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub AF_Test()
    Dim ce As Range
    Dim AF As AutoFilter
    Set AF = ActiveSheet.AutoFilter
    If (Not AF Is Nothing) Then
        ' Durchlaufe nur die sichtbaren Zellen in der ersten Spalte
        For Each ce In AF.Range.Columns(1).SpecialCells(xlCellTypeVisible)
            ' Hier kannst du die Zellen weiterverarbeiten oder in ein Array speichern
            Debug.Print ce.Address ' Beispiel für die Ausgabe
        Next ce
    End If
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus (Alt + F8, wähle „AF_Test“ aus und klicke auf „Ausführen“).

Häufige Fehler und Lösungen

  • Fehler: „Laufzeitfehler 1004: Keine sichtbaren Zellen gefunden“

    • Lösung: Stelle sicher, dass du einen Autofilter auf deine Daten angewendet hast und dass es tatsächlich sichtbare Zellen gibt.
  • Fehler: Makro gibt nur die ersten zusammenhängenden Zellen zurück

    • Lösung: Nutze AF.Range.Columns(1).SpecialCells(xlCellTypeVisible), um nur die erste Zelle jeder sichtbaren Zeile zu durchlaufen.

Alternative Methoden

Wenn du keine Arrays verwenden möchtest, kannst du die sichtbaren Zellen auch direkt in Excel manipulieren, indem du beispielsweise die Hintergrundfarbe änderst:

Sub AF_Color()
    Dim ce As Range
    Dim AF As AutoFilter
    Set AF = ActiveSheet.AutoFilter
    If (Not AF Is Nothing) Then
        For Each ce In AF.Range.SpecialCells(xlCellTypeVisible)
            ce.Interior.ColorIndex = 20 ' Ändert die Farbe der Zelle
        Next ce
    End If
End Sub

Diese Methode ist nützlich, wenn du nur eine visuelle Rückmeldung benötigst, ohne die Daten in einem Array zu speichern.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die sichtbaren Zellen in einem Array speichern kannst:

Sub StoreVisibleCellsInArray()
    Dim visibleCells As Range
    Dim cellArray() As Variant
    Dim i As Integer

    ' Speichere alle sichtbaren Zellen in einer Range
    Set visibleCells = ActiveSheet.Range("A1:C10").SpecialCells(xlCellTypeVisible)

    ' Dimensioniere das Array
    ReDim cellArray(1 To visibleCells.Count)

    ' Fülle das Array mit den sichtbaren Zellen
    i = 1
    For Each cell In visibleCells
        cellArray(i) = cell.Value
        i = i + 1
    Next cell

    ' Beispiel: Ausgabe der Werte im Direktfenster
    For i = LBound(cellArray) To UBound(cellArray)
        Debug.Print cellArray(i)
    Next i
End Sub

Tipps für Profis

  • Nutze Debug.Print, um Werte während der Entwicklung zu überprüfen, ohne das Excel-Blatt zu belasten.
  • Achte darauf, dass deine Daten gut strukturiert sind, um unerwartete Fehler zu vermeiden.
  • Experimentiere mit verschiedenen Excel-Funktionen, um die Automatisierung deiner Arbeitsabläufe zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich nur bestimmte Spalten der sichtbaren Zellen speichern?
Du kannst die Spalten in deinem Code anpassen, indem du AF.Range.Columns(n) verwendest, wobei n die entsprechende Spalte ist.

2. Funktioniert das auch in Excel 365?
Ja, die beschriebenen Methoden funktionieren in Excel 365 sowie in anderen Versionen von Excel, die VBA unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige