我的代码如下。我想设置命名范围(单元格)而不是范围(单元格)H $ 7和$ G $ 7。因为,例如,如果我在这些单元格之前添加新列并使用此代码恢复宏,则它无法正常工作。你有什么想法吗?提前致谢
With Range(SomeRange).FormatConditions _
.Add(xlExpression, xlFormula, "=((H$7<=$G$7)*((H$7+7)>$G$7))")
With .Interior
.Color = RGB(197, 217, 241)
End With
End With
答案 0 :(得分:1)
只需在公式中键入命名范围的名称,只要命名范围存在,就没有什么特别之处。如果我将H7命名为“B”和G7“A”,那么这对我有用......
Sub Test()
'Range
Dim R As Range
Set R = Range("A1")
R.FormatConditions.Delete
'Formula
Dim F As String
F = "=((B<=A)*((B+7)>A))"
'Condition
Dim Cond As FormatCondition
Set Cond = R.FormatConditions.Add(xlExpression, xlFormula, F)
Cond.Interior
Cond.Color = RGB(197, 217, 241)
End Sub
请注意,使用公式参数“FormatConditions.Add”,双引号内的所有内容都会被完全评估,就像在单元格中键入一样。参数作为字符串传递并解释为文字字符串值。因此,您可以通过将公式字符串复制并粘贴到单元格来测试它,它应该工作相同(返回1或0),在单元格中修改它,然后复制并回过去。
您不必有问题地创建/设置名称,但如果您愿意,那么我可能会使用workbooks collection,除非您在多个工作表上重复相同的名称,然后使用{{3 }}
关于命名范围......