Discussion:
Bedingte Formatierung mit VBA
(zu alt für eine Antwort)
Boris Helm
2009-07-28 17:33:26 UTC
Permalink
Hallo,

ich möchte eine bedingte Formatierung mit VBA steuern. Habe im Internet den
untenstehenden Code gefunden und die Teile ab ...,xlequal,.. angepasst.
Jetzt erkennt Excel das nur als Text. Wie bringe ich ihm nun bei Werte >0,01
und <0,9 entsprechend zu formatieren.

Über einen kompletten Code wäre ich natürlich auch dankbar :-)

Vielen Dank und Gruß
Boris

P.S. Hier der Code

Public Sub BedingtesAmpelFormat()
Dim Wert As Variant

With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter


'*** Bedingte Formatierung anlegen
.FormatConditions.Delete

' Bedingung für roten Zellhintergrund
With .FormatConditions.Add(xlCellValue, xlEqual, ">0,01 and <0,9")
.Font.ColorIndex = 3
.Interior.ColorIndex = 3
End With

' Bedingung für grünen Zellhintergrund
With .FormatConditions.Add(xlCellValue, xlEqual, ">=0,9 and <0,94")
.Font.ColorIndex = 50
.Interior.ColorIndex = 50
End With

' Bedingung für gelben Zellhintergrund
With .FormatConditions.Add(xlCellValue, xlEqual, ">= 0,94 and <=1")
.Font.ColorIndex = 6
.Interior.ColorIndex = 6
End With
End With
End Sub
Alexander Wolff
2009-07-28 18:31:28 UTC
Permalink
Post by Boris Helm
Hallo,
ich möchte eine bedingte Formatierung mit VBA steuern. Habe im
Internet den untenstehenden Code gefunden und die Teile ab
...,xlequal,.. angepasst. Jetzt erkennt Excel das nur als Text. Wie
bringe ich ihm nun bei Werte >0,01 und <0,9 entsprechend zu
formatieren.
Über einen kompletten Code wäre ich natürlich auch dankbar :-)
Vielen Dank und Gruß
Boris
P.S. Hier der Code
Public Sub BedingtesAmpelFormat()
Dim Wert As Variant
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
'*** Bedingte Formatierung anlegen
.FormatConditions.Delete
' Bedingung für roten Zellhintergrund
With .FormatConditions.Add(xlCellValue, xlEqual, ">0,01 and
<0,9") .Font.ColorIndex = 3
.Interior.ColorIndex = 3
End With
' Bedingung für grünen Zellhintergrund
With .FormatConditions.Add(xlCellValue, xlEqual, ">=0,9 and
<0,94") .Font.ColorIndex = 50
.Interior.ColorIndex = 50
End With
' Bedingung für gelben Zellhintergrund
With .FormatConditions.Add(xlCellValue, xlEqual, ">= 0,94 and
<=1") .Font.ColorIndex = 6
.Interior.ColorIndex = 6
End With
End With
End Sub
In A1 führe aus:

Sub Makro1()
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=UND(A1>0,01;0,9>A1)"
Selection.FormatConditions(1).Interior.ColorIndex = 3
End Sub



... denn das, was Du willst ...

Sub Makro2()
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="0,01", Formula2:="0,9"
Selection.FormatConditions(1).Interior.ColorIndex = 3
End Sub

... haut für Intervalle nicht hin. Es heißt nämlich nur "zwischen" (beide
Randwerte inklusive!), statt sauber:

Von ... bis unter ... oder
Von über ... bis ...
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Andreas Killer
2009-07-28 18:42:07 UTC
Permalink
Post by Boris Helm
ich möchte eine bedingte Formatierung mit VBA steuern. Habe im Internet
den untenstehenden Code gefunden und die Teile ab ...,xlequal,.. angepasst.
Jetzt erkennt Excel das nur als Text. Wie bringe ich ihm nun bei Werte
0,01 und <0,9 entsprechend zu formatieren.
Das geht so nicht, es gibt beim Vergleich der Zellwerte nur die
Operatoren xlBetween, xlEqual, xlGreater, xlGreaterEqual, xlLess,
xlLessEqual, xlNotBetween oder xlNotEqual.

Mit AND ist da nichts zu machen, wohl aber mit Between. Hier musst Du
jedoch die Grenzen um ein Minimum verschieben um ein >0,01 zu emulieren.

Und Du musst die Reihenfolge der Bedingungen ändern, die großen Zahlen
zuerst.

Andreas.

Sub BedingtesAmpelFormat()
Dim R As Range
Const Delta As Double = 0.000000000001
'Sind gerade Zellen markiert?
If Not TypeOf Selection Is Range Then Exit Sub
'Den aktuellen Bereich ermitteln
Set R = Selection

'Die bedingte Formatierung eines Bereiches...
With R.FormatConditions
'Evt. vorhandene Bedingungen löschen
.Delete
'Bedingungen hinzufügen
.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="0,94", Formula2:="1"
.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="0,9", Formula2:="0,94"
.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="0,01" + Delta, Formula2:="0,9"
'Farben festlegen
.Item(1).Interior.ColorIndex = 6
.Item(2).Interior.ColorIndex = 50
.Item(3).Interior.ColorIndex = 3
End With
End Sub

Lesen Sie weiter auf narkive:
Loading...