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
它 - 这不会导致你得到的错误,但我只是想我会突出显示它。
我有一个 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
它 - 这不会导致你得到的错误,但我只是想我会突出显示它。