Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

farbe auslesen

Betrifft: farbe auslesen von: thomas
Geschrieben am: 17.08.2004 12:19:48

Ich habe ein Problem. Ich habe in Excel mit bedingter formatierung ein paar zellen formatiert! die haben je nach dem wie der wert ist rot grün oder gelb. Nun möchte ich eine tabelle erstellen die mir alle werte der roten grünen und gelben zellen anzeigt! also in einem datenblatt soll es die anzeigen wo der hintergrund rot ist auf einem anderen die wo es grün ist und nochmals auf einem anderen die wo es gelb ist!

  


Betrifft: AW: farbe auslesen von: ChrisL
Geschrieben am: 17.08.2004 13:04:38

Hi Thomas

Die durch eine bedingte Formatierung erzeugten Farben lassen sich nicht auswerten, allerdings das Kriterium, nach dem du die Bedingung erstellt hast.

Am einfachsten mit Autofilter nach den entsprechenden Kriterien filtern.

Gruss
Chris


  


Betrifft: AW: farbe auslesen von: thomas
Geschrieben am: 17.08.2004 13:53:13

kann ich nicht irgend wie mit wenn sagen wenn grün dann und wenn rot mach das ???


  


Betrifft: AW: farbe auslesen von: Bertram
Geschrieben am: 17.08.2004 14:20:27

Hi Chris,

das geht nur über VBA, allerdings auch nicht wenn die Farbe über die bedingte Formatierung zugwiesen wird.

Gruß
Bertram


  


Betrifft: AW: farbe auslesen von: Ulf
Geschrieben am: 17.08.2004 15:20:00

Auch das geht! Nur ist es relativ aufwändig, deshalb tut sich das niemand an.

Ulf


  


Betrifft: AW: farbe auslesen von: ChrisL
Geschrieben am: 17.08.2004 15:24:42

Hi Ulf

Wie soll das gehen? Meines Wissens gibt es keine ColorIndex, wenn die Farbe mittels bedingter Formatierung erzeugt wurde. Klar könnte man das Kriterium abfragen, aber dann sind wir wieder bei meiner ersten Antwort.

Gruss
Chris


  


Betrifft: AW: farbe auslesen von: Ulf
Geschrieben am: 17.08.2004 15:35:34

Klar gibts einen Colorindex. Nur das nutzt ja nichts, du musst ja auch abfragen, ob die
entsprechende Bedingung eingetreten ist. Da leider eine Funktion, wie Value bei Gültigkeit fehlt, muss man die Abfrage selbst machen und das ist kompliziert, wenn die Bedingung eine komplexe Formel ist. Ansich ja auch kein Problem und längst gelöst, nur halt mit relativ großem Aufwand.

Ulf


  


Betrifft: AW: farbe auslesen von: ChrisL
Geschrieben am: 17.08.2004 20:20:30

Hi Ulf

OK, es gibt einen ColorIndex auch bei Zellen mit bedingter Formatierung, allerdings ist der Index der gleiche ob die Zelle Grün oder Rot ist.

Tja schade dass wir die genaue Bedingung nicht kennen, vielleicht wärs gar nicht so kompliziert.

Gruss
Chris


  


Betrifft: AW: farbe auslesen von: nighty
Geschrieben am: 17.08.2004 23:13:36

hi alle :)

wie gewuenscht :)

das urmakro netterweise von hajo zur verfuegung gestellt bekommen,hab es nur leicht modifiziert

gruss nighty

beispiel

=BedingungAdd(A1:A3;3)

gesuchte farbe einer bedingten formatierung,in diesem falle rot fuer die drei

einzufuegen unter alt f11(vbeditor)/einfugen/allgemeines modul


Function BedingungAdd(Zellen As Range, farbe As Long) As Double
Dim Zelle As Range
Dim farben As Integer
For Each Zelle In Zellen
farben = GetCellColor(Zelle)
If farben = farbe Then
BedingungAdd = BedingungAdd + Zelle.Value
End If
Next
End Function

Function GetCellColor(cell As Range) As Integer
Dim i
Dim myVal
Dim myColor As Integer
Dim done As Boolean
On Error Resume Next
Names("testname").Delete
On Error GoTo 0
Application.ReferenceStyle = xlR1C1
myVal = cell.Value
myColor = cell.Interior.ColorIndex
done = False
For i = 1 To cell.FormatConditions.Count
With cell.FormatConditions.Item(i)
If .Type = 1 Then
Select Case .Operator
Case xlBetween
If (myVal >= Evaluate(.Formula1) And myVal <= Evaluate(.Formula2)) _
Or (myVal <= Evaluate(.Formula1) And myVal >= Evaluate(.Formula2)) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlEqual
If myVal = Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlGreater
If myVal > Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlGreaterEqual
If myVal >= Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlLess
If myVal < Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlLessEqual
If myVal <= Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlNotBetween
If myVal < Evaluate(.Formula1) Or myVal > Evaluate(.Formula2) Then
myColor = .Interior.ColorIndex
done = True
End If
Case xlNotEqual
If myVal <> Evaluate(.Formula1) Then
myColor = .Interior.ColorIndex
done = True
End If
End Select
ElseIf .Type = 2 Then
Names.Add Name:="testname", RefersToR1C1Local:=.Formula1
If Evaluate("testname") Then
myColor = .Interior.ColorIndex
done = True
End If
Names("testname").Delete
Else
MsgBox "Unbekannter Typ: " & .Type, , "PANIC: In 
Function GetCellColor"
Exit Function
End If
End With
If done Then Exit For
Next
Application.ReferenceStyle = xlA1
GetCellColor = myColor
End Function



 

Beiträge aus den Excel-Beispielen zum Thema "farbe auslesen"