VBA|Select、Selection、Activate、ActiveCellの違い徹底解説

エクセルVBA VBAでセルの操作



VBAでセルを選択して、そのセルにデータを入れる・・・

よくある処理ですが、セルを選択するのはSelect?それともSelection?どっち?

選択したセルはActiveCellなの?じゃあ、Activateってなに??

紛らわしいので、今回はそれを解決するために徹底的に解説していきます!

参考:Excel VBA入門 その54:ShapeのSelectを解除する方法



Select、Selection、Activate、ActiveCellの違い徹底解説

どれも似たような動作をするイメージがありますが、それぞれ明確に違いがあるんです。

それぞれを解説していきます。

Selectメソッド

【構文】オブジェクト. Select

Selectメソッドは、指定したセルなどのオブジェクトを選択します。セル範囲をオブジェクトとして指定するとセル範囲を選択します。

例えば、以下の表があるときに、Range(“B2 : E11”). Select とすると、セルB2~E11の範囲が選択されます。

Select前
Select実行後は、指定したセルが選択される

つまり、Selectメソッドは、指定したセルを選択するという動作を行います。

Selectionプロパティ

Selectionプロパティは、すでに選択されているセル範囲などのオブジェクトを参照します。

つまり、上記のSelectメソッドで選択したセルに対して、何らかの操作を行うのがSelectionプロパティです。

例えば、以下のサンプルコードでは、Selectで選択したセルに対してSelectionを使用して背景色を変更しています。

Sub Selectionの動作()
    Range("B2: E11 ").Select 'セルB2~E11を選択する
    Selection.Interior.Color = RGB(200, 100, 100) '選択したセルの背景色を赤色に変更する
End Sub
Selectionの実行結果

繰り返しになりますが、Selectメソッドで選択したセルに対して、何らかの操作を行うのがSelectionプロパティです。

Activateメソッド

【構文】オブジェクト. Activate

Activateメソッドは、指定したセルなどのオブジェクトをアクティブにします。

「アクティブ」というのは、今まさに操作対象になっているという意味です。

あるセルに文字を入力しているときの、その文字入力しているセルのことをアクティブセルと言います。

Selectメソッドではセル範囲を選択しましたが、アクティブセルというのはそのうちの起点になっている1つのセルを指します。

セルをマウスで範囲選択した状態で、文字を入力しても一つのセル(起点のセル)にしか文字が入りません。その文字が入力されたセル1つをアクティブセルと言います。

少しくどいですが、SelectとActivateは混同しやすいですので気を付けてください。

それでは、Activateを使ったサンプルコードを紹介します。

Selectメソッドでセル「B2~E11」を選択し、その状態でセル「C3」をActivateでアクティブセルにします。

Sub Activateの動作()
    Range("B2: E11 ").Select
    Range("C3").Activate
End Sub
Selectでセル範囲を選択後、ActivateでC3をアクティブセルにする

もちろんこの状態でキーボードで文字入力してみると、アクティブセルになったセルC3に文字が入力されます。

ActiveCellプロパティ

ActiveCellプロパティは、 アクティブセルを参照します。

つまり、上記のActivateメソッドを使ってアクティブセルを指定し、そのアクティブセルに対して何らかの操作を行うのがActiveCellプロパティということになります。

例えば、以下のサンプルコードでは、Selectで選択したセルに対して、ActivateでアクティブセルをセルC3に指定し、そのアクティブセルに対してActiveCellでセルの背景色を赤に変更しています。

Sub ActiveCellの動作()
    Range("B2: E11 ").Select 'セルB2~E11を選択する
    Range("C3").Activate  'セルC3をアクティブセルにする
    ActiveCell.Interior.Color = RGB(200, 100, 100) 'アクティブセルの背景色を赤色に変更する
End Sub

繰り返しになりますが、アクティブセルに対して何らかの操作を行うのがActiveCellプロパティということになります。

【まとめ】Select、Selection、Activate、ActiveCellの違い徹底解説

Select、Selection、Activate、ActiveCellの違いについて説明してきました。

それぞれについて簡単にまとめると以下のようになります。

  • Selectメソッドは、セルなどのオブジェクトを選択する
  • Selectionプロパティは、Selectで選択したセルに対して何らかの操作を行う
  • Activateメソッドは、セルなどのオブジェクトをアクティブにする
  • ActiveCellプロパティは、アクティブセルに対して何らかの操作を行う

とても混同しやすいものなので、忘れたら何回も見直して、確実に使えるようになってくださいね。




VBAでセルの操作
ブイサバ【Excel VBAサバイバル】~とりあえずここに来れば解決できる~

コメント

  1. […] 参考:Excel VBA入門 その51:Select、Selection、Activate、ActiveCellの違い徹底解説 […]

タイトルとURLをコピーしました