
皆さんが普段Excelで何かしらの表などを作成する際、マウスなどで範囲を選択して罫線を引いたり、文字を入力したりする際、その対象となるセルやシート、ブックをアクティブにする必要があります。
「アクティブ」とは「今現在操作できるもの」といえます。
たとえば、何らかの文字をキーボードでタイプしたら入力されたセル・シート・ブックがアクティブだといえます。
Excel VBAではアクティブにするためにActivateメソッドが存在します。
今回は指定したセルやワークシート・ブックをアクティブにするActivateメソッドについてまとめていきます。
Activateメソッドの基本構文
オブジェクト.Activate
オブジェクト
Activateメソッドの対象のオブジェクトを指定します。
セルとワークシートとワークブックが主な対象となります。
オブジェクトに関しては下記記事をご参照ください。
Excelのオブジェクトの基礎知識まとめ | Excelを制する者は人生を制す ~No Excel No Life~
使用例①【単一セル選択】
もっともオーソドックスな使用例として単一セルをアクティブにする場合、対象のオブジェクトはRangeプロパティで取得します。
Rangeプロパティに関しては下記記事をご参照ください。
【Excel VBA】単一セルやセル範囲を参照するRangeプロパティまとめ | Excelを制する者は人生を制す ~No Excel No Life~
1 2 3 |
Sub 単一セル選択() Range("B5").Activate End Sub |
マクロの動作イメージ
B5セルがアクティブセルになりました。
Rangeプロパティの他にもCellsプロパティでも単一セルのオブジェクトを指定することが可能です。(下記記事参照)
【Excel VBA】行と列を別々に指定してセルを参照するCellsプロパティまとめ | Excelを制する者は人生を制す ~No Excel No Life~
使用例②【複数セル選択①】
一般的にActivateメソッドでは複数セルを対象にはしませんが、やれなくはないです。
1 2 3 |
Sub 複数セル選択①() Range("B5:B6").Activate End Sub |
マクロの動作イメージ
B5:B6が選択されました。
アクティブセルはB5となります。
複数セルを対象にした場合、範囲の中の右上のセルになります。
使用例③【複数セル選択②】
使用例②と選択範囲はいっしょですが、アクティブセルを任意に指定したい場合はコードを追加してあげます。
1 2 3 4 |
Sub 複数セル選択②() Range("B5:B6").Activate Range("B6").Activate End Sub |
マクロの動作イメージ
B5:B6が選択されました。
アクティブセルはB6となります。
一番目のActivateメソッドの箇所は本来Selectメソッドの方が視認性が良いです。
【Excel VBA】指定したセル範囲やワークシートを選択するSelectメソッド | Excelを制する者は人生を制す ~No Excel No Life~
使用例④【ワークシート選択】
続いて、ワークシートをアクティブにする場合はWorksheetオブジェクトを指定してあげます。
1 2 3 |
Sub ワークシート選択() Worksheets("Sheet1").Activate End Sub |
マクロの動作イメージ
Sheet1のワークシートがアクティブになりました。
使用例⑤【ワークブック選択】
ワークブックを選択する場合はWorkbookオブジェクトを指定してあげます。
1 2 3 |
Sub ワークブック選択() Workbooks("Trvl_TravelPlanner1.xlsx").Activate End Sub |
マクロの動作イメージ
「Trvl_TravelPlanner1.xlsx」のワークブックがアクティブになりました。
まとめ
Activateメソッドは簡単なコードだとSelectメソッドとあんまり違いがわかりにくく同じ結果となることが多いです。
しかし、ある程度のコード量になると使い分けをしないとエラーが発生したり、希望の結果を得られなかったりします。
次回以降はActivateメソッドとSelectメソッドの違いについて解説していく予定です。