セルをアクティブにする

広告

指定のワークシートの中のセルをアクティブにします。アクティブなセルとは例えば次のようなセルです。

セルをアクティブにする

上記の赤丸で囲まれた部分が背景が白色になっていると思います。これがアクティブセルです。アクティブセルは選択されたセルの中に含まれており、1つのセルだけが選択された状態であればアクティブセルも同じセルとなります。セルの領域が選択状態にある場合は、選択状態の中の1つのセルだけがアクティブとなります。

セルをアクティブにするには、アクティブにしたいRangeオブジェクトに対して「Activate」メソッドを使います。

Dim range1 As Range

Range("A1").Activate

ワークシートを指定しない場合には現在アクティブになっているワークシートが対象となります。

通常アクティブセルは単独のセルですが、セル領域に対して「Activate」メソッドを実行してもエラーとはなりません。その場合、セル領域の左上のセルがアクティブセルとなります。

またRangeオブジェクトに対して「Select」メソッドを実行した場合、単独のセルを選択した場合はそのセルが、セル領域を選択した場合は左上のセルがアクティブセルとなります。

セルが選択された状態でアクティブセルを設定した場合

どこかのセルが選択されている状態の時にアクティブセルを設定した場合の挙動について確認します。

まずアクティブに設定するセルが選択された状態のセル領域のどこかであった場合には、セルの選択状態は変更されずにその領域内の指定したセルがアクティブセルとなります。

アクティブに設定するセルが選択された状態のセル領域の中ではなかった場合には、それまで選択されていたセル領域は選択が解除されて、アクティブセルに指定したセルだけがアクティブになります。

アクティブでないワークシートに含まれるセルをアクティブに設定する場合

「Select」メソッドを実行する時と同じように、ワークシートを指定してアクティブセルを設定する場合には、対象のワークシートがアクティブになっていなければなりません。

Worksheets(2).Range("A1").Activate

上記の場合で、指定したワークシートがアクティブでない場合にはエラーとなります。その為、ワークシートを指定する場合には先にワークシートをアクティブにしてから「Activate」メソッドを実行して下さい。

Worksheets(2).Activate
Range("A1").Activate

サンプルプログラム

では簡単なサンプルで試してみましょう。

testcellselect3.bas

Sub テスト()

    Range("A1:D4").Select
    Range("B2").Activate

End Sub

上記マクロを実行すると次のようになります。

セルをアクティブにする

先にセル領域を選択してから、選択領域の中の1つをアクティブセルに設定しています。

もう一つ試してみます。

testcellselect4.bas

Sub テスト()

    Range("A1:D4").Select
    Range("C7").Activate

End Sub

上記マクロを実行すると次のようになります。

セルをアクティブにする

今度も先にセル領域を選択していますが、アクティブセルに設定したセルが選択領域内ではありませんので、選択されていた領域は選択が解除され、アクティブセルに設定したセルだけがアクティブに(同時に選択された状態に)なっています。

Excel VBA入門の他の記事を見てみる

( Written by Tatsuo Ikura )