Range Object - Excel 97

Select
Activate
Range
Cells
Rows
Columns
Excel
VBA
Tips to move cursor on Range Objects using Excel VBA.
本文を折り畳む 本文を開く

はじめに

Range Object 上でカーソルを移動させることは、VBA としては必ずしも必要の無い操作です。大部分の機能は、カーソルの位置に依存せずに実現できます。一方で、マクロの記録で作成した VBA コードは、操作に従う都合で、多くのカーソル移動を伴っています。カーソルの移動を理解して、必要なポイントだけで効果的に利用することは、コードのスリム化に欠かせません。

実例

カーソルの情報を得る

  1. ActiveCell は、現在のカーソル位置の Range Object を返します。
    Sub Range13()
        MsgBox ActiveCell.Address, vbOKOnly, _
            ActiveCell.Address(False, False, xlR1C1, True, ActiveCell.Next)
    End Sub
    
    Address プロパティは、Range Object の範囲を示す文字を返します。デフォルトでは A1 形式の絶対アドレスを返しますが、引数により R1C1 形式にしたり相対指定にしたり、シート名を含むアドレスにすることもできます。
  2. Address プロパティと似たものに、Row プロパティと Column プロパティがあります。これらは、アドレスを数値で返します。
    Sub Range13B()
        MsgBox ActiveCell.Row & "/" & ActiveCell.Column, vbOKOnly, _
            ActiveCell.Address(ReferenceStyle:=xlR1C1)
    End Sub
    
  3. Selection は、選択されている Object を返します。選択されているものが常に Range Object とは限らないという点に注意が必要です。
    Sub Range14()
        MsgBox Selection.Address, vbOKOnly, ActiveCell.Address
    End Sub
    
    セルに貼り付けた図形を選択しているような場合には、上のコードはエラーとなります。一方、ActiveCell は、図形を選択していても、セル情報を返します。ActiveCell は必ず単一のセルで、Selection の示す Object が Range Object の場合には、ActiveCell は Selection の部分集合となります。

カーソルを移動する

  1. Range Object の Select メソッドで、単独または複数セルの領域を選択できます。カーソルの位置は、選択領域の先頭セルに移動します。
    Sub Range15()
        Sheet1.Activate
        Range("D5").Select
        Range("D5:E7").Select
    End Sub
    
    Select メソッドは、Active でないシートには適用できません。したがって、次のようなコードは、ワークシートの状況に依存して、エラーになることがあります。
    Sub Range15bad()
        Sheet1.Range("D5").Select
    End Sub
    
  2. Range Object の Activate メソッドは、単一のセルを選択します。
    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 メソッド実行後の選択領域は、直前のカーソル位置に依存して異なるものになります。

Download a Sample Code

上記の解説で用いたサンプルコードは、以下のリンクからダウンロードできます。テキストファイルとして用意しているので、保存して Excel の Visual Basic Editor にインポートしてください。
  1. Save a program source (sample-vbaxlra1-1.bas) on your local disk.
  2. Start Microsoft Excel with a blank(new) book.
  3. Open the Visual Basic Editor. (Tool/Macro/Visual Basic Editor)
  4. Import the downloaded program source. (File/Import Files)

History

2002/3/24
URL移転
2001/3/11
sample-vbaxlra1-1.bas revised
2001/3/11
初版
本文を折り畳む back to home index of VBA