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 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.ValueIch kenne mich mit VBA zuwenig aus. Wie muss ich da die Arrays
genau ‚auffüllen‘?Gruss,
Janosh