VBA - 条件格式:Excel 2010不会工作,Excel 2013会

时间:2014-10-22 13:50:01

标签: excel vba excel-vba excel-2010 excel-2013

我最近编写了一段代码,用于检测(但不选择)必须进行条件格式化的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被声明为WorksheetResults被称为WorkbookFreqToCompare是一个不可能为空的数组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并显示正确的范围地址......它有什么问题?

1 个答案:

答案 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

如您所见,公式不再是公式,而是整数!这完美无瑕