我最近编写了一段代码,用于检测(但不选择)必须进行条件格式化的Range
,然后调用执行该作业的子例程。
' Format
For Each ws In Results.Sheets
Format_em_all ws.Range(ws.Cells(15, 2), ws.Cells(15 + UBound(FreqToCompare), WrittenCells))
Next ws
ws
被声明为Worksheet
,Results
被称为Workbook
,FreqToCompare
是一个不可能为空的数组WrittenCells
是整数而不是=。
子程序叫:
Sub Format_em_all(RangeToFormat As Range)
Select Case RangeToFormat.Parent.Name
Case "lol"
RangeToFormat.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=2.9"
RangeToFormat.FormatConditions(1).Interior.ColorIndex = 3
RangeToFormat.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, Formula1:="=2.00001", Formula2:="=2.9"
RangeToFormat.FormatConditions(2).Font.ColorIndex = 3
Case "rofl"
RangeToFormat.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotBetween, Formula1:="=-4", Formula2:="=4"
RangeToFormat.FormatConditions(1).Interior.ColorIndex = 3
End Select
End Sub
我使用Excel 2013在我的计算机上执行了代码,一切顺利。 10分钟前,一位同事说,我的宏不起作用...我们去用Excel 2010检查他的电脑......是的,它不起作用。它在Case "lol"
之后的第一行卡住了“运行时错误”5“ - 无效的过程调用或参数”。
我尝试? RangeToFormat.Address
并显示正确的范围地址......它有什么问题?
答案 0 :(得分:0)
这个答案都归功于Axel Richter:
Sub Format_em_all(RangeToFormat As Range)
Select Case RangeToFormat.Parent.Name
Case "lol"
RangeToFormat.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:=2.9
RangeToFormat.FormatConditions(1).Interior.ColorIndex = 3
RangeToFormat.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, Formula1:=2.00001, Formula2:=2.9
RangeToFormat.FormatConditions(2).Font.ColorIndex = 3
Case "rofl"
RangeToFormat.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotBetween, Formula1:=-4, Formula2:=4
RangeToFormat.FormatConditions(1).Interior.ColorIndex = 3
End Select
End Sub
如您所见,公式不再是公式,而是整数!这完美无瑕