我已经对Stack Exchange和Google进行了很好的搜索,但我找不到我想要的确切答案。
我很难理解使用RangeVariable.Range.Offset返回的值,而不是Worksheet.Range.Offset
我定义了一个从A2到J10的范围,所以跳过第一行:
Dim myRange As Range
Set myRange = ActiveSheet.Range("A2", "J10")
所以现在我测试使用.偏移(0行,9列):
MsgBox myRange.Range("A1").Offset(0, 9).Address
我按预期返回"$J$2",因为这个范围的"A1"在表上是"A2"。
但现在我用上面的作为另一个的第二个论点。范围属性测试:
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作为Range属性的第二个参数可能会这样工作吗?
干杯,Stephen
我模糊地记得前面的一个问题,我不记得它是否得到了回答,但这给出了预期的输出:
Range(myRange.Range("A1"), myRange.Range("A1").Offset(0, 9)).Address
编辑:就是这样-在范围内选择一个范围
编辑2:我会发现这更容易使用-
myRange.Range("A1").Resize(1,10).Address