Für diesen Zweck gibt es eine ModifyAppliesToRange
Methode . Sie müssen auch in ein Range-Objekt konvertieren .strRange
Ersetzen .FormatConditions(1).AppliesTo = strRange
durch .FormatConditions(1).ModifyAppliesToRange Range(strRange)
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.
Für diesen Zweck gibt es eine ModifyAppliesToRange
Methode . Sie müssen auch in ein Range-Objekt konvertieren .strRange
Ersetzen .FormatConditions(1).AppliesTo = strRange
durch .FormatConditions(1).ModifyAppliesToRange Range(strRange)