Há um método ModifyAppliesToRange
projetado para essa finalidade . Você também precisará converter strRange
em um objeto Range.
Substituir
%código%
com
.FormatConditions(1).AppliesTo = strRange
Estou tentando usar o VBA para criar uma regra de formatação condicional e aplicá-la a várias células.
Eu tentei isso é criando as regras para uma única célula e, em seguida, editando a propriedade do aplicativo para cada objeto de condição de formato. Veja aqui:
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
Isso não parece funcionar porque, uma vez que atinge a linha AppliesTo, ele realmente altera o valor da própria célula em vez de modificar a propriedade AppliesTo do formato.
Qual é a melhor maneira de modificar a propriedade "Aplica-se a" da regra de formatação condicional de uma célula?
Eu sei que posso modificar minha instrução "com" para incluir as outras células que desejo modificar; não apenas a célula B4. O problema com isso é que o objeto range () só pode aceitar um argumento de string que não tenha mais que 1024 caracteres. E, na verdade, quero aplicar essa regra a um grande número de células não contíguas que quebram o limite de 1024 caracteres.
Há um método ModifyAppliesToRange
projetado para essa finalidade . Você também precisará converter strRange
em um objeto Range.
Substituir
%código%
com
.FormatConditions(1).AppliesTo = strRange