Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
612to616
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
612to616
612to616
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hintergrundfarbe bei bedingter Formatierung ermitt

Hintergrundfarbe bei bedingter Formatierung ermitt
18.05.2005 08:54:29
Ede
Hallo,
ich bin neu hier und habe folgendes Problem:
ich möchte per vba die verwendete Hintergrundfarbe (interior.color/colorindex)ermitteln, welche eine Zelle auf Grund mehrerer bedingter Formatierungen benutzt.
Leider bekomme ich nur die Farben je Bedingung in vba heraus, aber nicht die benutzte entsprechend Inhalt der Zelle.
Kann mir hier jemand helfen,
Danke

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hintergrundfarbe bei bedingter Formatierung ermitt
18.05.2005 08:56:33
Hajo_Zi
Hallo Ede,
die Farbe der bedingten Formatierung ermitteln ist das komplizierteste was ich kenne. Schaue dazu auf meine HP auf der SEite Fremde Dateien.
Einfacher kommst Du hin, wenn Du die Bedingung in VBA nachbaust.
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem Windows 2000 SP4 und Excel Version 2000 SP3.



"Wer Rechtschreibfehler findet, darf sie behalten!"
Dies gilt auch für Bert.
Anzeige
AW: Hintergrundfarbe bei bedingter Formatierung ermitt
18.05.2005 09:13:01
ede
Hallo Hajo_Zi,
Super, habe die dort angegebene Funktion zu Tests bei mir eingebaut.
Sie leifert erstmal den richtigen ColorIndex zurück.
Danke für die schnelle Hilfe.
AW: Hintergrundfarbe bei bedingter Formatierung ermitt
18.05.2005 10:54:37
ede
Hallo nochmal,
nach erneutem Test musste ich feststellen, das die Funktion "GetCellColor(cell As Range)" nur dann funktioniert, wenn die bedingte Formatierung vom item.Type=1 (Zellwert ist). Kommt Die bedingte Formatierung aus dem item.Type=2 (Formel ist), dann läufts sie auf einnen Error. Dazu eine Idee ?
Hintergrundfarbe bei bedingter Formatierung
18.05.2005 11:39:52
ede
Wenn Die bedingte Formatierung aus "Formel ist" kommt, wie kann man dann die Hintergrundfarbe der bedingten Formatierung ermitteln?
Anzeige
AW: Hintergrundfarbe bei bedingter Formatierung
18.05.2005 14:10:45
bst
Hallo Ede,
evaluate() scheint nur mit englischen Formeln zurechtzukommen. In der bedingten
Formatierung stehen aber - IMHO dummerweise - lokalisierte Formeln drinne.
Deshalb geht das so wohl nicht :-(
Mir ist bisher nur der Umweg über Namen eingefallen.
D.h. aber daß es nicht als UDF benutzt werden kann.
Vielleicht hat ja jemand noch was besseres...
Übrigens, Formeln können auch in 'normalen' Bedingungen stehen.
HTH, Bernd
--
Option Explicit

Sub TestCellColor()
MsgBox GetCellColor(ActiveCell), , "Meine Füllfarbe ist:"
End Sub


Sub TestTextColor()
MsgBox GetCellColor(ActiveCell, True), , "Meine Textfarbe ist:"
End Sub


Function GetCellColor(cell As Range, Optional OfText As Boolean = False) As Integer
Dim myVal, eval_1, eval_2
Dim i As Integer
Dim done As Boolean
If OfText Then ' Default ist die Textfarbe der Zelle
GetCellColor = cell.Font.ColorIndex
Else           ' Default ist die Füllfarbe der Zelle
GetCellColor = cell.Interior.ColorIndex
End If
myVal = cell.Value   ' Der Wert der Zelle
For i = 1 To cell.FormatConditions.Count
With cell.FormatConditions.Item(i)
' Anders habe ich es nicht hinbekommen!
' Den ReferenceStyle mußte ich umbiegen damit
' Names.Add RefersToR1C1Local & Evalute funktionieren
' ein simples Evaluate(.Formula1) SCHEITERT, falls dort
' eine Formel mit Namen steht, z.B.: SUMME
' dieser Name ist hier nämlich lokalisiert, evaluate selber
' funktioniert aber nur mit englischem SUM !!!
Application.ReferenceStyle = xlR1C1
'cell.FormulaLocal = .Formula1
On Error Resume Next
Names.Add Name:="testname_1", RefersToR1C1Local:=.Formula1
Names.Add Name:="testname_2", RefersToR1C1Local:=.Formula2
eval_1 = Evaluate("testname_1")
eval_2 = Evaluate("testname_2")
Names("testname_1").Delete
Names("testname_2").Delete
On Error GoTo 0
Application.ReferenceStyle = xlA1
' Hier erfolgt dann die eigentliche Unterscheidung
If .Type = 1 Then
Select Case .Operator
Case xlBetween
done = (myVal >= eval_1 And myVal <= eval_2) Or _
(myVal >= eval_2 And myVal <= eval_1)
Case xlEqual
done = myVal = eval_1
Case xlGreater
done = myVal > eval_1
Case xlGreaterEqual
done = myVal >= eval_1
Case xlLess
done = myVal < eval_1
Case xlLessEqual
done = myVal <= eval_1
Case xlNotBetween
done = (myVal < eval_1 And myVal < eval_2) Or _
(myVal > eval_1 And myVal > eval_2)
Case xlNotEqual
done = myVal <> eval_1
Case Else
MsgBox "Unbekannter Operator: " & .Operator, , "PANIC: In 

Function GetCellColor"
Exit Function
End Select
ElseIf .Type = 2 Then
done = eval_1 = True
Else
MsgBox "Unbekannter Typ: " & .Type, , "PANIC: In 

Function GetCellColor"
Exit Function
End If
If done Then ' wir haben fertig
If OfText Then
GetCellColor = xlColorIndexNone
' hmm, falls niemals solch ein Teil zugewiesen wurde
' steht hier halt noch NULL
On Error Resume Next
GetCellColor = .Font.ColorIndex
On Error GoTo 0
Else
GetCellColor = .Interior.ColorIndex
End If
Exit Function
End If
End With
Next
End Function

Anzeige
AW: Hintergrundfarbe bei bedingter Formatierung
18.05.2005 15:14:45
ede
Hallo Bernd,
besten dank für deine funktion, leider habe ich damit auch keinen erfolg.
mein beispiel der bedingten formatierung
1. Bedingung: formel ist =rest(a1;2)&gt0 --&gt Hintergrundfarbe=1
2. Bedingung: formel ist =rest(a1;2)=0 --&gt Hintergrundfarbe=2
die funktion liefert:
-bei A1=ungerade Zahl den falschen Farbindex
-bei A1=gerade Zahl den richtigen Farbindex
So wie es aussieht immer den aus der letzten Bedingung!
AW: Hintergrundfarbe bei bedingter Formatierung
18.05.2005 15:34:01
bst
Nochmals Hallo,
hmm, eher wird wohl irgendwie auf die aktuell selektierte Zelle losgegangen.
Füge mal am Anfang der Funktion "GetCellColor" einen "cell(1, 1).Select" ein.
Zwar ganz und gar nicht schön, scheint aber zu funktionieren.
Weitere Überraschungen ?
HTH, Bernd
Anzeige
AW: Hintergrundfarbe bei bedingter Formatierung
18.05.2005 15:56:02
ede
Danke,
so funktioniert es!

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige