Anzeige
Archiv - Navigation
1548to1552
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
Inhaltsverzeichnis

FormatConditions

FormatConditions
03.04.2017 16:07:41
Burkhard
Hallo miteinander,
bin etwas überrascht (um das Mindeste zu sagen) über folgendes Verhalten von Excel:
Ich setze per VBA eine bedingte (Farb-)Formatierung (Range.FormatConditions). Wenn ich vorher die Range (zwei Zeilen) selektiere, wird NUR die erste Zeile farbig dargestellt, wenn die Bedingung zutrifft. Wenn ich das select vermeide und die Range direkt anspreche, wird NUR die zweite Zeile eingefärbt.
Folgender Code:
'    gwCheckSheet.Range(sFormatRange).Select		' sFormatRange ist "A4:J5"
'    With Selection
With gwCheckSheet.Range(sFormatRange)
.FormatConditions.Delete
sConditionFormula = "=$" & sRange & "=" & Chr(34) & csActionCorrect & Chr(34)
' sRange ist "A4"
.FormatConditions.Add Type:=xlExpression, Formula1:=sConditionFormula
' sConditionFormula ist "=$A4="correct""
.FormatConditions.Item(1).Interior.Color = RGB(205, 255, 155)
sConditionFormula = "=$" & sRange & "=" & Chr(34) & csActionDelete & Chr(34)
.FormatConditions.Add Type:=xlExpression, Formula1:=sConditionFormula
' sConditionFormula ist "=$A4="delete""
.FormatConditions.Item(2).Interior.Color = RGB(255, 205, 205)
End With
Der aktive Code färbt A5:J5 (wenn A4 = "correct" oder "delete") - der mit dem select färbt A4:J4. Eigentlich sollten sich ja in beiden Fällen A4:J5 ändern, oder?
Hab ich da irgendwo einen Knoten im Hirn? Oder im Code?
Grüße
Burkhard

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: FormatConditions
03.04.2017 17:03:20
ChrisL
Hi Burkhard
Funktioniert doch...
Sub t()
Dim gwCheckSheet As Worksheet
Dim sConditionFormula As String
Dim sFormatRange As String
Dim sRange As String
Dim csActionCorrect As String
Dim csActionDelete As String
Set gwCheckSheet = Worksheets("Tabelle1")
sFormatRange = "A4:J5"
sRange = "A4"
csActionCorrect = "correct"
csActionDelete = "delete"
With gwCheckSheet.Range(sFormatRange)
.FormatConditions.Delete
sConditionFormula = "=$" & sRange & "=" & Chr(34) & csActionCorrect & Chr(34)
' sRange ist "A4"
.FormatConditions.Add Type:=xlExpression, Formula1:=sConditionFormula
' sConditionFormula ist "=$A4="correct""
.FormatConditions.Item(1).Interior.Color = RGB(205, 255, 155)
sConditionFormula = "=$" & sRange & "=" & Chr(34) & csActionDelete & Chr(34)
.FormatConditions.Add Type:=xlExpression, Formula1:=sConditionFormula
' sConditionFormula ist "=$A4="delete""
.FormatConditions.Item(2).Interior.Color = RGB(255, 205, 205)
End With
End Sub

cu
Chris
Anzeige
AW: FormatConditions
03.04.2017 18:20:13
Burkhard
Hallo Chris,
das Ergebnis scheint davon abzuhängen, welche Zelle beim Ausführen der .FormatConditions gerade aktiv (selektiert) ist!
selektiert     gefärbt
A3           nichts!
A4            A4:J4
B4            A4:J4
A4:J4         A4:J4
A5            A5:J5
B5            A5:J5
B5:J5         A5:J5
A4:J5         A4:J4
A6           nichts!

Ich habe das dutzende Male ausprobiert; was ich nicht hinbekomme ist die Einfärbung von A4:J5.
Ist dieses Verhalten ein Fehler oder eine "Eigenart" der FormatConditions, ist da irgendwas bekannt? Gibt es noch andere Fallen, wo die direkte Adressierung unterlaufen wird? Wäre gar nicht schön ...
Grüße
Burkhard
Anzeige
AW: FormatConditions
03.04.2017 18:57:19
ChrisL
Hi Burkhard
Schwarzer Schwan...
https://support.microsoft.com/de-de/help/895562/the-conditional-formatting-may-be-set-incorrectly-when-you-use-vba-in-excel
Absolute Bezüge oder vorgängige Selektion wird vorgeschlagen.
Vielleicht mal eine Index-Bedingung probieren z.B.
=INDEX($A$1:$A$1000;ZEILE();1)="xyz"
cu
Chris
AW: FormatConditions
04.04.2017 09:00:09
Burkhard
Hallo Chris,
das Rätsel ist gelöst: "absolute Bezüge" und "vollständig" sind die Zauberformeln, wie auch in dem Microsoft-Artikel, dessen Link du mir geschickt hast (und den ich lieber in Englisch lese, da kapier ich's auf Anhieb):
Wenn die beiden Range-Angaben wirklich komplett absolut referenziert werden ($A$1 statt $A1) und damit auch die sConditionFormula absolut ist, dann funktioniert's! Es werden sogar beide Zeilen (A4:J5) gefärbt, was mit der vorgängigen Selektion nicht wirklich hinhaut.
Vielen Dank für deine Hilfe!
Grüße
Burkhard
Anzeige
AW: FormatConditions
04.04.2017 09:40:44
ChrisL
Hi Burkhard
Danke für die Rückmeldung, allerdings hätte ich noch einen kleinen Vorbehalt.
Für die absoluten Bezüge hast du vermutlich eine Schleife über die Zeilen gemacht. Somit erhält jede Zeile eine eigene Bedingung, was die Ressourcen unnötig belastet. Bei nur zwei Zeilen ist dies natürlich nicht schlimm, aber ansonsten hätte ich die Index-Variante gewählt:
Sub t()
Dim gwCheckSheet As Worksheet
Dim sConditionFormula As String
Dim sFormatRange As String
Dim sRange As String
Dim csActionCorrect As String
Dim csActionDelete As String
Set gwCheckSheet = Worksheets("Tabelle1")
sFormatRange = "A4:J5"
sRange = "INDEX($A:$A;ZEILE();1)"
csActionCorrect = "correct"
csActionDelete = "delete"
With gwCheckSheet.Range(sFormatRange)
.FormatConditions.Delete
sConditionFormula = "=" & sRange & "=" & Chr(34) & csActionCorrect & Chr(34)
.FormatConditions.Add Type:=xlExpression, Formula1:=sConditionFormula
.FormatConditions.Item(1).Interior.Color = RGB(205, 255, 155)
sConditionFormula = "=" & sRange & "=" & Chr(34) & csActionDelete & Chr(34)
.FormatConditions.Add Type:=xlExpression, Formula1:=sConditionFormula
.FormatConditions.Item(2).Interior.Color = RGB(255, 205, 205)
End With
End Sub

cu
Chris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge