Sub Range13()
MsgBox ActiveCell.Address, vbOKOnly, _
ActiveCell.Address(False, False, xlR1C1, True, ActiveCell.Next)
End Sub
Address プロパティは、Range Object の範囲を示す文字を返します。デフォルトでは A1 形式の絶対アドレスを返しますが、引数により R1C1 形式にしたり相対指定にしたり、シート名を含むアドレスにすることもできます。
Sub Range13B()
MsgBox ActiveCell.Row & "/" & ActiveCell.Column, vbOKOnly, _
ActiveCell.Address(ReferenceStyle:=xlR1C1)
End Sub
Sub Range14()
MsgBox Selection.Address, vbOKOnly, ActiveCell.Address
End Sub
セルに貼り付けた図形を選択しているような場合には、上のコードはエラーとなります。一方、ActiveCell は、図形を選択していても、セル情報を返します。ActiveCell は必ず単一のセルで、Selection の示す Object が Range Object の場合には、ActiveCell は Selection の部分集合となります。
Sub Range15()
Sheet1.Activate
Range("D5").Select
Range("D5:E7").Select
End Sub
Select メソッドは、Active でないシートには適用できません。したがって、次のようなコードは、ワークシートの状況に依存して、エラーになることがあります。
Sub Range15bad()
Sheet1.Range("D5").Select
End Sub
Sub Range16()
Sheet1.Activate
Range("D5").Activate
Range("D5:E7").Activate
End Sub
上のコードの実行結果は、Select メソッドの場合とは異なります。Activate メソッドはカーソル位置が変化しない場合には実行されません。そのため、実行後の選択領域は、D5 セルのみです。
Sub Range17()
Sheet1.Activate
Range("E5").Activate
Range("D5:E7").Activate
End Sub
上のコードの場合には、最後の Activate によってカーソル位置が変化します。そのため、実行後の選択領域は、D5:E7 という複数セルになります。このように、 Activate メソッド実行後の選択領域は、直前のカーソル位置に依存して異なるものになります。