Wie kann ich die Eigenschaft "Gilt für" der Regel für bedingte Formatierung einer Zelle mithilfe von VBA ändern?

608
dutsnekcirf

Ich versuche, VBA zu verwenden, um eine bedingte Formatierungsregel zu erstellen und auf mehrere Zellen anzuwenden.

Ich habe versucht, dies zu tun, indem Sie die Regeln nur für eine Zelle erstellen und dann die appliesto -Eigenschaft für jedes formatcondition-Objekt bearbeiten. Siehe hier:

Sub test()  Dim strRange As String Dim myRange As Range  strRange = "$B$4,$B$9:$BS$9"  With Sheets("Sheet1").Range("B4")  .FormatConditions.Delete .FormatConditions.Add xlExpression, xlEqual, "=ISBLANK(RC)" .FormatConditions(.FormatConditions.Count).SetFirstPriority .FormatConditions(1).StopIfTrue = True .FormatConditions(1).AppliesTo = strRange End With   End Sub 

Dies scheint nicht zu funktionieren, da es nach dem Erreichen der AppliesTo-Zeile tatsächlich den Wert der Zelle selbst ändert, anstatt die AppliesTo-Eigenschaft der formatcondition zu ändern.

Was ist der beste Weg, um die Eigenschaft "Gilt für" der bedingten Formatierungsregel einer Zelle zu ändern?

Ich weiß, dass ich meine "with" -Anweisung ändern kann, um die anderen Zellen aufzunehmen, die ich ändern möchte. nicht nur Zelle B4. Das Problem dabei ist, dass das range () - Objekt nur ein String-Argument akzeptieren kann, das nicht länger als 1024 Zeichen ist. Und in Wahrheit möchte ich diese Regel auf eine große Anzahl nicht zusammenhängender Zellen anwenden, die diese Grenze von 1024 Zeichen überschreiten.

0

1 Antwort auf die Frage

1
davidmneedham

Für diesen Zweck gibt es eine ModifyAppliesToRangeMethode . Sie müssen auch in ein Range-Objekt konvertieren .strRange

Ersetzen .FormatConditions(1).AppliesTo = strRange durch .FormatConditions(1).ModifyAppliesToRange Range(strRange)

Ich schäme mich so. Ich hatte die VBA-Objektbibliothek von Microsoft Excel auf einer separaten Browserregisterkarte geöffnet und die Methode ModifyAppliesToRange vollständig übersehen. Danke, dass Sie mich darauf aufmerksam gemacht haben. Funktioniert super. dutsnekcirf vor 6 Jahren 0