【发布时间】:2017-06-01 01:47:23
【问题描述】:
我对 Stack Exchange 和 Google 进行了很好的搜索,但我找不到我正在寻找的确切答案。
我无法理解使用 RangeVariable.Range.Offset 而不是 Worksheet.Range.Offset 返回的值
我定义了一个从 A2 到 J10 的范围,所以跳过第一行:
Dim myRange As Range
Set myRange = ActiveSheet.Range("A2", "J10")
所以现在我使用 .Offset(0 rows, 9 columns) 进行测试:
MsgBox myRange.Range("A1").Offset(0, 9).Address
我按预期返回“$J$2”,因为此范围的“A1”在工作表本身上是“A2”。
但现在我使用上面的作为另一个 .Range 属性测试的第二个参数:
MsgBox myRange.Range("A1", myRange.Range("A1").Offset(0, 9)).Address
我返回“$A$2:$J$3”,所以看起来它跳过了计算第二个参数的行,即使行偏移量为零,它最终还是一个 2 行范围。
如果我将行偏移量更改为 -1,它会返回“$A$2:$J$2”,所以只有一行。
我通常使用 Worksheet.Range 来定义范围,它总是按预期工作。 谁能想到为什么使用 RangeVariable.Range.Offset 作为范围属性的第二个参数可能会这样工作?
干杯,斯蒂芬
【问题讨论】:
标签: excel variables range offset vba