VBAでセルを選択して、そのセルにデータを入れる・・・
よくある処理ですが、セルを選択するのはSelect?それともSelection?どっち?
選択したセルはActiveCellなの?じゃあ、Activateってなに??
紛らわしいので、今回はそれを解決するために徹底的に解説していきます!
参考:Excel VBA入門 その54:ShapeのSelectを解除する方法
Select、Selection、Activate、ActiveCellの違い徹底解説
どれも似たような動作をするイメージがありますが、それぞれ明確に違いがあるんです。
それぞれを解説していきます。
Selectメソッド
【構文】オブジェクト. Select
Selectメソッドは、指定したセルなどのオブジェクトを選択します。セル範囲をオブジェクトとして指定するとセル範囲を選択します。
例えば、以下の表があるときに、Range(“B2 : E11”). Select とすると、セルB2~E11の範囲が選択されます。
つまり、Selectメソッドは、指定したセルを選択するという動作を行います。
Selectionプロパティ
Selectionプロパティは、すでに選択されているセル範囲などのオブジェクトを参照します。
つまり、上記のSelectメソッドで選択したセルに対して、何らかの操作を行うのがSelectionプロパティです。
例えば、以下のサンプルコードでは、Selectで選択したセルに対してSelectionを使用して背景色を変更しています。
Sub Selectionの動作()
Range("B2: E11 ").Select 'セルB2~E11を選択する
Selection.Interior.Color = RGB(200, 100, 100) '選択したセルの背景色を赤色に変更する
End Sub
繰り返しになりますが、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
もちろんこの状態でキーボードで文字入力してみると、アクティブセルになったセル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プロパティは、アクティブセルに対して何らかの操作を行う
とても混同しやすいものなので、忘れたら何回も見直して、確実に使えるようになってくださいね。
コメント
[…] 参考:Excel VBA入門 その51:Select、Selection、Activate、ActiveCellの違い徹底解説 […]