問題を簡単に説明するために、次のサブを作成しました。アクティブシートの範囲A2:E10を範囲変数に割り当てます。次に、別の範囲変数に、この範囲のサブ範囲であるセル(1、1)を(3、3)に割り当てます。
これにはA2からC4の範囲が含まれると予想していました(A2は最初の列であり、より大きな範囲の最初の行であるため)。ただし、各範囲の最初のセルの.Rowメソッドを呼び出すと、異なる結果が得られます。範囲rが大きいほど「2」が返され、範囲rSubが小さいほど「3」が返されます。
(.Rowメソッドは、呼び出された範囲の絶対行を返します)
どちらもセルA2を参照する必要があるため、これらの呼び出しは両方とも2を返すと予想されます。なぜこれがそうではないのか誰かが説明できますか?
*編集:.Rowメソッドと同様に、各範囲の最初のセルの.Columnメソッドを呼び出すようにsubを変更しました。ご想像のとおり、これにより両方の範囲で「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