目標
ExcelVBAのActiveCellプロパティを理解して操作できる
ExcelVBAではプロパティを知るとかなり多くの処理を自動で行わせることができます。加えて、VBAのプログラミング学習では変数や制御構造を学ぶ前にいろいろな設定を経験すると制御構造や様々なデータ構造の学習に入ったときに、オブジェクトやプロパティについて悩まなくてもよくなるので学習効率が良くなります。
ExcelVBAでよく使う「9つのプロパティ」
プロパティ(アルファベット順) |
ActiveSheet |
ActiveCell ※今回の記事で扱うプロパティです。 |
Cells |
End |
Offset (※今回の記事で少し登場します。詳しい説明は別の記事で。) |
Range |
Sheets |
Value |
Worksheets |
ActiveCelllプロパティの概要と利用方法
ActiveCellプロパティとは
ActiveCellプロパティとはApplicationオブジェクト、Windowオブジェクトのプロパティです。
- ApplicationオブジェクトはExcelを操作するためのオブジェクト。
- WindowオブジェクトはExcelを開いたときのブックの枠を操作するオブジェクト。
いずれにしてもExcelを操作するためのオブジェクトとなります。
ActiveCellプロパティを利用すると現在アクティブになっているセルに対して操作を行うことが可能になります。
ActiveCellの利用パターン
①特定のひとつのセルを選択しておく。
ActiveCellプロパティの利用では直前にセルをひとつ選択する操作が入ります。
Range(“B3”).Select
②アクティブセルをひとつ下へ移動させる方法。
ActiveCell.Offset(1).Select
③アクティブセルを基準にして連続しているセルを全選択する方法。
ActiveCell.CurrentRegion.Select
「②アクティブセルをひとつ下へ移動させる方法。」
この操作はOffsetプロパティで実現できます。
Offsetは現在位置からの距離の表現を利用してセルの位置を指定するものになります。
Offset(上下方向、左右方向)入力します。
例えば「1つ下、2つ右」に移動したい場合は
Offset(1,2)となります。
今回は左右方向の移動は無しということで省略した記述になっています。
「③アクティブセルを基準にして連続しているセルを全選択する方法。」
Excelはセルの中に「値がある」か「空である」かを識別できるように出来ていています。例えば一覧表のようにセルの中に値が入ったもの同士で接していると、それらのセル群は1つグループとして捉えられます。
一覧表の中のセルをアクティブにして「Ctrl+A(全選択)」した時に表を全選択できるのはこの分類する機能を利用しているためです。
例えば、下のような表があった場合を考えてみます。
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_22.png)
ここではVBAでの設定ではなく通常のExcel操作で一覧表の全選択を行ってみます。
一覧表内のいづれかのセルを選択して「Ctrl+A(全選択)」を行います。
まずはC6を選択します。
C6を選択
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_23.png)
「Ctrl+A(全選択)」
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_24.png)
一覧表の全選択が行えました。
そしてこの表の全選択(「Ctrl+A(全選択)」)と同じ動きを行ってくれるのがCurrentRegionプロパティとなります。
サンプルプロシージャ
Option Explicit
Sub practiceAC()
Worksheets("sheet4").Range("B3").Select
ActiveCell.Offset(1).Select
If ActiveCell.Value <> "" Then
ActiveCell.CurrentRegion.Select
End If
End Sub
If や <>については別の機会に記事にしますが、ここでは
「もしアクティブセルの中身が空でなかったら、ActiveCell.CurrentRegion.Select を行う」という意味となります。
実行結果
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_25.png)
もしも、B4(今回はOffset(1)でB4をアクティブにしている)が空だった場合
Worksheets(“sheet4”).Range(“B3”).Select
ActiveCell.Offset(1).Select
の二行はプログラムとして動いているが、Ifステートメント内は条件に合わないので全選択の動作はかからなくなっています。
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_26.png)
ActiveCellプロパティはアクティブセルに対して色々な設定を行わせてくれます。ActiveSheetやActiveCellはプロシージャ内でシート名やセル番地を利用しないのでプログラムを上手に構成することによってプログラムに修正が起きたとき修正の量を減らすことが期待できます。
今回は以上です。
![](https://howahowablog.com/wp-content/uploads/2022/09/EXCEL-VBA-おすすめ書籍5選-320x180.jpg)
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。
![](https://howahowablog.com/wp-content/uploads/2022/04/Google-Chrome-:ブックマー-Microsoft-Edge:お気に入り-登録・削除方法-320x180.jpg)
![](https://howahowablog.com/wp-content/uploads/2022/12/パソコン選び-320x180.jpg)