Abfragen der Zell-Hintergrundfarbe

Hallo zusammen

Wie kann man in VBA die Hintergrundfarbe einer Zelle abfragen?

Ich möchte ein Array erstellen, in dem alle Zellen (und deren Inhalte) enthalten sind, welche z.B. eine gelbe Hintergrundfarbe besitzen.

Schöne Grüsse,
Janosh

Hallo Janosh,

schau mal hier: http://www.wer-weiss-was.de/cgi-bin/forum/showarticl…

evtl. hilft das ja schon weiter

Gruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Franz

Danke für deine Antwort. Ja, das hilft mir weiter.

 For Each Zelle In ActiveSheet.UsedRange
 If Zelle.Interior.ColorIndex = 6 Then
 ...
 End If
 Next Zelle

Was mir nun noch fehlt, ist: wie bringe ich nun die gefundene Zelle in 2 Arrays:

ZellKoord() = Zelle.Column & „:“ & Zelle.Row
ZellWerte() = Zelle.Value

Ich kenne mich mit VBA zuwenig aus. Wie muss ich da die Arrays genau ‚auffüllen‘?

Gruss,
Janosh

Hallo Janosh,

nachfolgender Code zeigt Beispielhaft, wie du die Infos zu den gefundnen Zellen in Arrays schreiben kannst. Deine vorsgesehene Methode Spalte/Zeile der Zelle zu verarbeiten ist abhängig von der weiteren verarbeitung im Code evtl. nicht die ideale Lösung. Ich hab im Code ein paar Alternativen hineinkommentiert.

Gruß
Franz

Sub test()
 Dim ZellKoord(), ZellWerte(), lngZaehler As Long, wksAkt As Worksheet, Zelle As Range

 Set wksAkt = ActiveSheet 'Zuweisung des aktiven Blatts zu einer Objekt-Variablen, macht Code übersichtlicher

 ' Arrays auf vorläufigen Max.-Wert dimensionieren
 ReDim ZellKoord(1 To wksAkt.UsedRange.Cells.Count)
' ReDim ZellKoord(1 to 2, 1 To wksAkt.UsedRange.Cells.Count) As Long ' alternative Lösung für Zeile/Spalte Info
 ReDim ZellWerte(1 To wksAkt.UsedRange.Cells.Count)
 ' UsedRange auswerten, Daten gefundener Zellen in Array schreiben
 lngZaehler = 0
 For Each Zelle In wksAkt.UsedRange
 If Zelle.Interior.ColorIndex = 6 Then
 '...Code
 '...Code
 lngZaehler = lngZaehler + 1
 ZellKoord(lngZaehler) = Zelle.Address(ReferenceStyle:=xlA1) 'in A1-Schreibweise
 ' ZellKoord(lngZaehler) = Zelle.Address(ReferenceStyle:=xlR1C1) 'in Z1S1-Schreibweise
'Die nachfolgende Zeile
 ' ZellKoord(lngZaehler) = Zelle.Column & ":" & Zelle.Row
'ist nicht die ideale Lösung, besser dann evtl. 2-dimensionales Feld verwenden
' ZellKoord(1, lngZaehler) = Zelle.Column 'Alternative
' ZellKoord(2, lngZaehler) = Zelle.Row 'Alternative
 ZellWerte(lngZaehler) = Zelle.Value
 End If
 Next Zelle
 'Überzählige (leere Datenzeilen) im Array wieder löschen
 If lngZaehler \> 0 Then
 ReDim Preserve ZellKoord(1 To lngZaehler)
 ReDim Preserve ZellWerte(1 To lngZaehler)
' ReDim Preserve ZellWerte(1 To 2, 1 To lngZaehler)'Alternative
 '...Code
 '...Code
 Else
 Erase ZellKoord
 Erase ZellWerte
 End If
 '...Code
 '...Code
 'Arrays leeren
 Erase ZellKoord
 Erase ZellWerte
End Sub

Was mir nun noch fehlt, ist: wie bringe ich nun die gefundene
Zelle in 2 Arrays:

ZellKoord() = Zelle.Column & „:“ & Zelle.Row
ZellWerte() = Zelle.Value

Ich kenne mich mit VBA zuwenig aus. Wie muss ich da die Arrays
genau ‚auffüllen‘?

Gruss,
Janosh