Excel VBAでセルを選択する:Select

Excel ではセルをクリックすると選択状態になります。これを VBA で実現する場合は、Range オブジェクトの Select メソッドを使います。ここでは、Select メソッドの使い方と使う上での注意点について説明します。

Select の使い方

Select の構文は以下のように記述します。

Rangeオブジェクト.Select

Range オブジェクトで指定した範囲のセルが選択状態になります。

セルを指定して選択する

以下は  B3 を選択状態にする例です。

' セルB3を選択する
Range("B3").Select

vba_select1

範囲を指定して選択する

Range オブジェクトで範囲を指定してセルを選択することもできます。

' セルA3~E5を選択状態にする
Range("A3:E5").Select

vba_select2

離れたセルを選択する

Range オブジェクトで指定すれば、離れたセルも同時に選択できます。

' セルA3, セルC4, セルE5を選択状態にする
Range("A3,C4,E5").Select

vba_select3

Cells プロパティでセルを選択する

Range プロパティではなく、Cells プロパティで取得した Rangeオブジェクトを使うこともできます。

' CellsプロパティでRangeオブジェクトを取得して選択
Cells(3, 5).Select   ' 3行目の5列目(セルE3)

アクティブなシート以外は選択状態にできない

Select メソッドはアクティブなシート以外では使用することができません。たとえば、Sheet1 を表示している状態で次のコードを実行するとエラーになります。

' Sheet2のセルB2を選択状態にする
Worksheets("Sheet2").Range("B2").Select

エラーとなる原因は、Sheet2 はアクティブではないためです。Sheet2 のセルを選択状態にしたい場合は、Sheet2 をアクティブにした後、Select を実行します。

シートをアクティブ状態にするためには Activate メソッドを使用しますす。

Worksheetオブジェクト.Activate

以下は Sheet2 をアクティブにしてセル B2 を選択状態にする例です。

' Sheet2 をアクティブ状態にする
Worksheets("Sheet2").Activate

' セルB2を選択状態にする
Worksheets("Sheet2").Range("B2").Select

Select と Activate について

Select と Activate の動きはよく似ていますが、異なる動作をするメソッドです。

Select は選択するためのメソッドで複数のオブジェクトに対して使うことができます。Activate は操作対象を指定するためのメソッドで、基本的には1つのオブジェクトに対して使います。

たとえば、セル範囲 A1~C6 までを選択状態にし、B2 を操作対象の状態にしたい場合は以下のように記述することができます。

' セルA1~C6を選択
Range("A1:C6").Select

' セルB2を操作対象にする
Range("B2").Activate

Worksheet オブジェクトも Select メソッドをもっていますが、 Range オブジェクトと同じような考え方で使うことができます。

' Sheet1とSheet2を選択
Worksheets(Array("Sheet1", "Sheet2")).Select

' Sheet2を操作対象にする
Worksheets("Sheet2").Activate

イベント