Wenn ich im Excel alle Zellen mit roter bzw. rötlicher Hintergrundfarbe zählen will, könnte das z. B. mit folgender benutzerdefinierter Funktion geschehen:
Function Farben_auswerten(Zellen As Range) As Double
Dim Zelle As Range
Dim farbe As Integer
Farben_auswerten = 0
For Each Zelle In Zellen
farbe = Zelle.Interior.ColorIndex
If farbe = 3 Or farbe = 7 Or farbe = 38 Then 'rot, lila, rosa
Farben_auswerten = Farben_auswerten + 1
End If
Next
End Function
Das funktioniert sofort, wenn es mit z. B. =Farben_auswerten(D5:smiley:20)
benutzt wird.
Wenn man aber eine Hintergrundfarbe ändert, ohne dabei was in die Zelle einzugeben, oder auf „entf“ zu drücken, ändert sich das Formelergebnis leider nicht.
Was tun?
Ein Application.Volatile in der Formel hilft nicht.
Das funktioniert sofort, wenn es mit z. B.
=Farben_auswerten(D5:smiley:20)
benutzt wird.
Wenn man aber eine Hintergrundfarbe ändert, ohne dabei was in
die Zelle einzugeben, oder auf „entf“ zu drücken, ändert sich
das Formelergebnis leider nicht.
Ein Application.Volatile in der Formel hilft nicht.
Hallo JK,
ich habs jetzt nicht nachgestellt, sicher hast du schon gecheckt was passiert wenn du F9 drückst oder die Zelle mit der Funktion markierst, dann F2 und Enter.
Soweit ich weiß bringt Volatile etwas wenn irgendwo in der Mappe eine andere Formel/Funktion berechnet wird.
Was auch zu Performance-Problemen (Excel wird sau langsam) führen kann bei großen Mappen mit vielen Funktionen die volatile benutzen.
Bei Milliarden Zellen in 2007 kann das schon mal dauern
Eine wirksame Maßnahme wäre, alle in Excel vorgegebenen Möglichkeiten die Farbe zu ändern mit einem eigenen Makro zu belegen.
Dieses Makro erlaubt dann dem User wie gewohnt die Farbe zu ändern, anschließend aktualisiert es das Funktionsergebnis bzw. braucht man dann gar keine Funktion mehr, das Makro schreibt das farbzählergebnis direkt in die Zelle wo früher die Funktion stand.
Das ist m.E. ein möglicher Weg.
Ich weiß aber grad nicht ob ich Lust hab das zu codieren.
sicher hast du schon
gecheckt was passiert wenn du F9 drückst oder die Zelle mit
der Funktion markierst, dann F2 und Enter.
Funktioniert beides, darf dann aber nicht vergessen gehen.
Eine wirksame Maßnahme wäre, alle in Excel vorgegebenen
Möglichkeiten die Farbe zu ändern mit einem eigenen Makro zu
belegen.
Dieses Makro erlaubt dann dem User wie gewohnt die Farbe zu
ändern, anschließend aktualisiert es das Funktionsergebnis
Das wäre schon mal eine Verbesserung.
Ich weiß aber grad nicht ob ich Lust hab das zu codieren.
Nicht nötig, kriege ich selbst hin. - Es geht auch nur um 2 oder 4 Farben.
Wenn ich im Excel alle Zellen mit roter bzw. rötlicher
Hintergrundfarbe zählen will, könnte das z. B. mit folgender
benutzerdefinierter Funktion geschehen:
Das funktioniert sofort, wenn es mit z. B.
=Farben_auswerten(D5:smiley:20)
benutzt wird.
Wenn man aber eine Hintergrundfarbe ändert, ohne dabei was in
die Zelle einzugeben, oder auf „entf“ zu drücken, ändert sich
das Formelergebnis leider nicht.
Was tun?
Auf die (unselige) Farben-Berechnung verzichten, die Kriterien in Hilfszellen sauber erstllen und die Einfärbung über die Bedingte Formatierung mit Hilfe der Hilfszellen umsetzen.
Das Verändern einer Formatierung löst in Excel kein Ereignis aus, also kann dadurch weder eine Formel-Berechnung noch ein VBA-Makro angestossen werden.
Daher ist auch Application.Volatile im VBA-Code drin nur eine Krücke und kann nie zuverlässig funktionieren (in diesem Zusammenhang).