我创建了以下 sub 来简单地说明问题。我将活动工作表的范围 A2:E10 分配给范围变量。然后,对于另一个范围变量,我将这个范围的子范围,单元格 (1, 1) 分配给 (3, 3)。
我原以为这将包括 A2 到 C4 的范围(因为 A2 是第一列,较大范围的第一行)。但是,当我调用每个范围的第一个单元格的 .Row 方法时,我会得到不同的结果:较大的范围 r 返回“2”,而较小的范围 rSub 返回“3”。
(.Row 方法返回调用它的范围的绝对行)
我希望这两个调用都返回 2,因为它们都应该引用单元格 A2。谁能解释为什么不是这样?
*编辑:我刚刚更改了 sub 以便它调用每个范围的第一个单元格的 .Column 方法,就像它调用 .Row 方法一样。如您所料,这将为两个范围返回“1”。
Sub test()
Dim r As Range
Set r = Range("A2:E10")
MsgBox r.Cells(1).Row '= 2
Dim rSub As Range
With r
Set rSub = .Range(.Cells(1, 1), .Cells(3, 3))
End With
MsgBox rSub.Cells(1).Row '= 3
End Sub