Range.Offset 变成了 Double

Range.Offset is turned into a Double

我有一个 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 会使程序崩溃(需要对象),第二次会起作用。 sub 需要 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:你的第二次调用提供了不同的 Range 因为你没有 Offset 它 - 这不会导致你得到的错误,但我只是想我会突出显示它。