Wert wenn bestimmte Hintergrundfarbe
#1
Hallo an alle!

Wie kann ich im Bereich B16:AF40 die Hintergrundfarbe jeder Zelle auslesen?

Wenn Hintergrundfarbe 15 bzw.RGB(217,217,217) dann Wert "Sa" in entsprechende Zelle eintragen
Wenn Hintergrundfarbe 48 bzw.RGB(166,166,166) dann Wert "So" in entsprechende Zelle eintragen

Danke für Eure Hilfe
Antworten Top
#2
(30.08.2025, 09:10)Andyle schrieb: Wie kann ich im Bereich B16:AF40 die Hintergrundfarbe jeder Zelle auslesen?

Mit VBA. Allerdings wäre es besser, Du beziehst Dich auf konkretere Dinge als auf Farben... z, Bsp. auf das Datum, über dessen Auswertung Du vermutlich die bed. Formatierung mit der Füllfarbe erreicht hast... Du kannst exakt die gleiche Formel verwenden, wie für die bed. Formatierung. Das ginge dann auch ohne VBA...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#3
Danke.

Es müsste allerdings mit VBA machbar sein, da manuelle Werte in die Zellen eingetragen werden. 
Mit Formel würde es dann nicht funktionieren.

Die Hintergrundfarbe für Sa und So kommt aus der bedingten Formatierung!
Antworten Top
#4
Hi,

wenn die Hintergrundfarbe aus der bedF kommt, dann kann man doch den Wert aus der Formel für die bedF auslesen. Ansonsten würde ich mal behaupten, dass in der Datei was schief läuft, wenn man "Sa" u. "So" suchen muß, dafür gibt es das Datum!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#5
Hallo,

die Farbwerte aus der bedingten Formatierung kann man mit VA auslesen. Trotzdem bin ich der Meinung, dass man Auswertungen nicht über Zellformate vornehmen sollte-
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#6
(30.08.2025, 09:10)Andyle schrieb: Wenn Hintergrundfarbe 15 bzw.RGB(217,217,217) dann Wert "Sa" in entsprechende Zelle eintragen
Wenn Hintergrundfarbe 48 bzw.RGB(166,166,166) dann Wert "So" in entsprechende Zelle eintragen
....
Es müsste allerdings mit VBA machbar sein, da manuelle Werte in die Zellen eingetragen werden.

Ja was denn nun? Sa oder So oder noch andere manuelle Werte?

Ich würde die Formelvariante vorziehen:

=WENN(WOCHENTAG(A1;2)  =6;"Samstag";WENN(WOCHENTAG(A1;2) = 7;"Sonntag";""))
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#7
Andyle,

Mit der Farbe einer Zelle irgendwas zu bestimmen ist eine ganz dumme Idee! Kuck mal auf das Bild:
   

Hand auf's Herz, die Zellen sehen doch alle gleich rot aus, oder? 
An den Werten in der Zelle lässt sich erahnen das ich wohl zeigen will das dem nicht so ist.
Wie hab ich das gemacht?

Mach eine neue Datei, färbe den Hintergrund von A1 rot oder in irgendeiner anderen beliebigen Farbe.
Und dann lässt Du den Code laufen:

Code:
Option Explicit

Sub Test()
  Dim Here As Range
  Dim Color As Long, i As Long, j As Long
  Dim aRGB() As Integer
  Set Here = Range("A1")
  Color = Here.Interior.Color
  ReDim aRGB(0 To 2) As Integer
  Dim Direction As Integer
  Color2RGB Color, aRGB(0), aRGB(1), aRGB(2)
  i = 0
  For j = 1 To 2
    If aRGB(j) < aRGB(i) Then i = j
  Next
  Direction = IIf(aRGB(i) > 127, -1, 1)
  On Error GoTo Exitpoint
  Do While aRGB(i) <= 255
    Color = VBA.RGB(aRGB(0), aRGB(1), aRGB(2))
    With Here
      .Interior.Color = Color
      .Value = Color
    End With
    Set Here = Here.Offset(1)
    aRGB(i) = aRGB(i) + Direction
  Loop
Exitpoint:
End Sub

Sub Color2RGB(ByVal Color As Long, _
    ByRef Red As Integer, ByRef Green As Integer, ByRef Blue As Integer)
  'Calculate RGB values from Color (see also VBA.RGB)
  Red = Color And 255 'Low byte only
  Green = Color \ 256 And 255 'Shr 8
  Blue = Color \ 65536 And 255 'Shr 16
End Sub

Wenn nur ein schusseliges Bit irgendwo anders ist, das sieht das für Dich als Mensch gleich aus, für die Maschine vor unserer Nase jedoch nicht!

Zum anderen gibt es keine Möglichkeit in Excel was Dich erkennen lässt das sich die Farbe geändert hat. Wenn Du also mit VBA die Farbe ausliest dann weißt Du nie ob das Ergebnis richtig ist. Wenn nur Du allein die Datei verwendest, dann bist Du wenigstens selber schuld wenn es falsch ist.

Und dann gibt es da noch das Problem welche Farbe man denn nun nehmen soll, was Du nicht weißt ist das eine Zelle mehrere Farben haben kann.

An die eigentliche Grundfarbe der Zelle kommst Du mit Range.Interior.Color, wenn die Zelle dann aber noch eine bedingte Formatierung hat, dann musst Du Range.DisplayFormat.Interior.Color verwenden. Hat die Zelle jedoch ein Muster, dann geht das mit Range.Interior.PatternColor
   

Und alle 3 Farben können zusammen in einer Zelle sein!

Also lass den Quatsch, wenn eine Zelle eine Farbe hat, dann hat das einen Grund. 
Und diesen Grund kann man erkennen, in 95% aller Fälle die mir in über 30 Jahren untergekommen sind.

Bei Dir ist das ganz einfach, Du hast ein Datum, jedes Datum hat einen Wochentag und die lassen sich ganz einfach zählen und NICHT mit "Sa" in der Zelle.

Tu Dir selber einen Gefallen und nimm unseren Rat an, auch wenn Dir Deine Farblösung im Moment einfacher erscheint.

Andreas.
Antworten Top
#8
Hi
Code:
Dim Zelle as Range
For each Zelle in Range("B16:AF40")
    Select Case Zelle.DisplayFormat.Interior.Color
        Case RGB(217, 217, 217): Zelle.Value = "Sa"
        Case RGB(166, 166, 166): Zelle.Value = "So"
        Case Else
    End Select
Next
Gruß Daniel
[-] Folgende(r) 1 Nutzer sagt Danke an slowboarder für diesen Beitrag:
  • Andyle
Antworten Top
#9
Vielen Dank für all Eure Anteilnahme zur Hilfe.

@ slowboarder

Genau dass habe ich gesucht. Funktioniert super!
Danke
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste