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

VBA-Hintergrundfarbe in bestimmten Zellen zählen

Forumthread: VBA-Hintergrundfarbe in bestimmten Zellen zählen

VBA-Hintergrundfarbe in bestimmten Zellen zählen
22.11.2025 17:32:36
Oldie64
Hallo Leute,

Ich habe mir ein kleines Script als Anfänger zusammengebastelt, wo ich die Hintergrundfarbe in einem von mir markierten Bereich zählen kann. Soweit, so gut.
Man kann das zwar auch mit einer Formel =ZELLE.ZUORDNEN(63;INDIREKT("ZS(-1)")) machen, aber auf unserem Arbeitsrechner ist wohl die Excel 4.0-Kompatibilität, so heißt das meine ich, gesperrt und somit wirft die Formel dann den #NV-Fehler aus. Kann ich leider nichts dran ändern.

Nun möchte ich das Script so erweitern oder besser anpassen, dass ich den Bereich zwar auswähle, es aber nur bestimmte Zellen, die ich auswähle, zählen soll. Der Bereich könnte auch schon im Script festgelegt werden (L11-AJ11). Meine Versuche mit Cells(11,12) ect. sind kläglich gescheitert. Entweder es kommen Anweisungsende oder Listenende-Fehler oder auch Benutzerdefinierter Typ nicht definiert.
Somit hoffe ich auf euren genialen Geist hier und freue mich jetzt schon auf eure Hilfe.

Ich bedanke mich schon mal für eure Zeit und Mühe hier.

Hier mein kleines Script

Oldie64
Function ZaehleNachFarbeHO(Farbe As Range, Bereich As Range) As Long

Dim Zelle As Range
Dim Zaehler As Long
Application.Volatile
For Each Zelle In Bereich
If Zelle.Interior.ColorIndex = 22 Then
Zaehler = Zaehler + 1
End If
Next Zelle
ZaehleNachFarbeHO = Zaehler
End Function

Sub FarbeHO()

End Sub
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Hintergrundfarbe in bestimmten Zellen zählen
22.11.2025 18:39:32
Ulf
Hi,
ein paar Beispiele, du könntest auch mit Index der zelle im Bereich arbeiten, dann aber mit Array&Co oder mit Intersect Überschneidungen zählen. Übersichtlich bleibt es so
Option Explicit

Function ZaehleNachFarbeHO(Farbe As Integer, Bereich As Range) As Long
Dim Zelle As Range
Dim Zaehler As Long
'Wofür ?
'Application.Volatile
For Each Zelle In Bereich
If Zelle.Interior.ColorIndex = Farbe Then
Zaehler = Zaehler + 1
End If
Next Zelle
ZaehleNachFarbeHO = Zaehler
End Function

Sub FarbeHO()
Dim rg As Range
'test
' ThisWorkbook.Worksheets(1).Cells(11, 12).Interior.ColorIndex = 22
Set rg = ThisWorkbook.Worksheets(1).Range("L11:S11")
Set rg = Application.Union(rg, ThisWorkbook.Worksheets(1).Cells(11, 22))
Set rg = Application.Union(rg, ThisWorkbook.Worksheets(1).Cells(11, 24))
Set rg = Application.Union(rg, ThisWorkbook.Worksheets(1).Range("V11:Z11"))
MsgBox ZaehleNachFarbeHO(22, rg)
End Sub

hth
Ulf
Anzeige
AW: VBA-Hintergrundfarbe in bestimmten Zellen zählen
23.11.2025 20:44:23
Oldie64
Hallo Ulf,

Vielen lieben Dank für deine Mühe.
Ich habe mal dein Script 1:1 übernommen und ausprobiert. Leider kann ich keinen Unterschied feststellen. Wenn ich in eine bestimmte Zelle =ZaehleNachFarbeHO eingebe, dann erscheint nach dem Klick auf Funktion das Auswahlfenster für das Feld für die Farbe und darunter das Feld für den Bereich. Mehr ist nicht zu sehen.
Bin wohl zu doof, das Script entsprechend anzupassen. Ich habe mal mit Ergänzung "Cells As Range" eine Zelle im Auswahlfenster hinzugefügt und eine Zelle ausgwählt. Leider zählt dann das Script nicht.

Trotzdem Danke

Oldie64

Anzeige
AW: VBA-Hintergrundfarbe in bestimmten Zellen zählen
23.11.2025 13:00:44
Daniel
Hi
probiere es mal so:

Function ZaehleNachFarbeHO(Farbe As Range, Bereich As Range) As Long

Dim Zelle As Range
Dim Zaehler As Long
Application.Volatile
For Each Zelle In Bereich
If Zelle.Interior.Color = Farbe.Interior.Color Then
Zaehler = Zaehler + 1
End If
Next Zelle
ZaehleNachFarbeHO = Zaehler
End Function



in der Zelle dann diese Formel:
=ZaehleNachFarbeHO(A1;L11:AJ11)

wobei A1 die Zelle ist, die in der Farbe formatiert ist, die gezählt werden soll und L11:AJ11 der Bereich, der durchsucht wird

Beachte, dass du Farben, die über die Bedingte Formatierung erstellt werden, so nicht gezählt werden können.

Gruß Daniel
Anzeige
AW: VBA-Hintergrundfarbe in bestimmten Zellen zählen
23.11.2025 21:33:31
GerdL
Moin,
teste mal.
Function ZaehleNachFarbeHO(Farbe As Range) As Long

Dim Bereich As Range
Dim Zelle As Range
Dim Zaehler As Long
Application.Volatile
Set Bereich = Intersect(Selection, Range("A1,L11,AJ11"))
If Bereich Is Nothing Then
ZaehleNachFarbeHO = 0: Exit Function
End If
For Each Zelle In Bereich
If Zelle.Interior.Color = Farbe.Interior.Color Then
Zaehler = Zaehler + 1
End If
Next Zelle
ZaehleNachFarbeHO = Zaehler
End Function


Gruß Gerd
Anzeige
AW: VBA-Hintergrundfarbe in bestimmten Zellen zählen
23.11.2025 22:09:47
Oldie64
Hi GerdL,

habe ich getetestet und die einzelnen Zellen "L11,S11,Z11,AG11" für meine Tabelle eingetragen. Farbe.Interior.Color habe ich durch "22" ersetzt. Da ich hier nun im Auswahlfenster nur noch die Farbe auswähle kommt als Ergebnis 0, obwohl hier 2 der vorgegebenen Zellen die Farbe "22" haben.

Danke für deine Idee. Aber ich bin sicher, irgendwann kommt schon der richtige Lösungsansatz. Ihr seid schon toll, was Ihr so drauf habt mit VBA. Da muss ich noch eine Menge lernen.
"Application.Volatile" wurde durch Ulf ja hinterfragt. Ich habe wegen der Aktualisierung gemacht, aber bei Hintergrundfarben geht wohl nur durch F9 eine Aktualisierung, wie ich das verstanden habe und somit wäre das dann wirklich überflüssig, oder?

Beste Grüße

Oldie64
Anzeige
AW: VBA-Hintergrundfarbe in bestimmten Zellen zählen
24.11.2025 12:59:25
schauan
1)
Du könntest auch nach Farbe filtern und per TEILERGEBNIS die Anzahl sichtbarer Zellen ausgeben - falls Du nur mal nachschauen willst ...
2)
https://www.clever-excel-forum.de/Thread-Farbe-in-Zelle?pid=19720#pid19720
3)
bei VBA muss man auch schauen, ob die Farbe eingetragen oder per bedingter Formatierung erzeugt wurde, das wäre ggf. unterschiedlich zu programmieren.
Selection.Cells(i).Interior.Color vs. Selection.Cells(i).DisplayFormat.Interior.Color, siehe auch
https://www.clever-excel-forum.de/Thread-farbige-zellen-zaehlen--35665?pid=255828#pid255828
4)
falls es eine b.F. ist. kann man eventuell auch die zugehörigen Daten zählen ...
Anzeige
AW: VBA-Hintergrundfarbe in bestimmten Zellen zählen
23.11.2025 21:07:00
Oldie64
Hallo Daniel,

Genauso will und habe ich es ja auch gemacht. Dann werden allerdings alle Zellen in diesem Bereich mit derselben Farbe gezählt. Ich möchte jedoch, dass im dem Bereich (A1;L11:AJ11) eben nur die von mir selektierten Zellen gezählt werden, weil eben es in dem Bereich 2 oder 3 Zellen mit der Farbe schon gibt. Als Beispiel nenne ich jetzt mal den Kalender im Monat:----------Mo - Di - Mi - Do - Fr - Sa - So----
In der Zeile darunter Farbe:-- 22 - 22 - 22 - 2 - 22 - 14 - 14-----
Ich wähle den Bereich von Mo bis So in der Zeile mit der Farbe aus. Okay. Aber dann zählt er 4 x die Farbe 22. Ich möchte jedoch zwar den Bereich entweder auswählen und dann die Zellen selektieren, die gezählt werden sollen. Meinetwegen nur die Zelle mit Mittwoch.
Oder ich habe meinetwegen die Möglichkeit nur im Auswahlfenster meinetwegen 5 Zellen zu selektieren. Was ich ja im Script mit "Cells As Range" auch einrichten kann. Dann werden mir meinetwegen 4 Auswahlfenster für einzelne Zellen angezeigt. Aber das Zählen funktioniert dann leider nicht. Nehme an, dass liegt daran, dass in der dann entstandenen Formel A1;;L11 mit doppelten Simikolon erscheint. Also müste die Formel angepasst werden.

Beste Grüße

Oldie64
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige