我的Range对象有一个奇怪的行为:不知何故它变成了一个Double。
这是我的代码。
Sub Test()
Dim RRange As Range
Set RRange = ThisWorkbook.Worksheets("Sheet1").Range("R4")
Set RRange = RRange.Offset(0, -1)
UpdateConditionalFormatting (RRange)
UpdateConditionalFormatting (ThisWorkbook.Worksheets("Sheet1").Range("R4"))
End Sub
所以UpdateConditionalFormatting的第一次调用会使程序崩溃(需要对象),第二次调用就可以了。这个子程序需要Range对象
我不知道这里出了什么问题 :(
Sub UpdateConditionalFormatting(ByVal rng As Range)
With rng.FormatConditions.AddColorScale(ColorScaleType:=3)
.SetFirstPriority
.ColorScaleCriteria(1).Type = xlConditionValueLowestValue
.ColorScaleCriteria(1).FormatColor.Color = 8109667
.ColorScaleCriteria(2).Type = xlConditionValuePercentile
.ColorScaleCriteria(2).Value = 50
.ColorScaleCriteria(2).FormatColor.Color = 8711167
.ColorScaleCriteria(3).Type = xlConditionValueHighestValue
.ColorScaleCriteria(3).FormatColor.Color = 7039480
End With
End Sub
只要去掉括号,使用
UpdateConditionalFormatting RRange
而不是
UpdateConditionalFormatting (RRange)
要么就是使用 Call
语法。
Call UpdateConditionalFormatting(RRange)
N.B: 你的第2次呼叫也提供了一个不同的... ... Range
因为你没有 Offset
它 - 这不会导致你得到的错误,但我只是想我会强调它。