VBA入門
セル・行・列の選択(Select,ActivateとCurrentRegion)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2021-08-28

第28回.セル・行・列の選択(Select,ActivateとCurrentRegion)


マクロVBAで、セル、行、列を選択するときの記述について説明します。


まずは、セルの選択について説明する前に、
選択セルアクティブセルについて、 説明する必要があります。


選択セルとアクティブセル

マクロ VBA セルの選択

この状態では、
選択セルは、B2~C6の10個のセルです。
アクティブセルは、B2セルになります。

選択セルは、1つの領域(連続した範囲)である必要はなく、
Ctrlを押しながら選択した場合は、複数の領域が選択できます。

しかし、アクティブセルは常に1つです
アクティブブックのアクティブシートにのみ存在します。
実際にはウィンドウごとに存在しますが、話が難しくなるのでここでは割愛します。
アクティブではないシートの最終アクティブセルは、通常はアクティブセルとは呼びません。
マクロでアクティブセルを参照する時は、

ActiveCell

このように書きます。
このセルに"文字"を入れる場合は、

ActiveCell = "文字"

しかし、マクロにおいて、ActiveCellを使う事はあまり無いでしょう。
使う事はあまり無いでしょうと言うより、あまり使わない方が良いでしょうと理解してください。


セルの選択

Range("セル番地").Select
または、
Cells(行, 列).Select

※SelectはRangeオブジェクトのメソッドです。メソッドについては最後に説明します。

複数セルの指定方法は、
第9回.Rangeでのセルの指定方法
・複数のセル(矩形のセル範囲) ・列全体 ・行全体 ・名前定義のセル範囲 ・特殊な指定方法 ・マクロVBAで良く使う書き方
第10回.Range以外の指定方法
・Cells(行番号, 列番号) ・Rows(行番号) ・Columns(列番号) ・RangeとCellsの関連記事
第11回.RangeとCellsの使い方
・RangeとCellsの基本的な使い分け方 ・固定セル(固定位置)の指定 ・Rangeに変数は使わないようにします ・1つの(VBAで位置を変化させる)セルを指定する場合 ・セル範囲(複数セル)を指定する場合 ・複数行全体、複数列全体の指定 ・RangeとCellsの使い分け方のまとめ ・RangeとCellsの基本の関連記事 ・RangeとCellsの応用の関連記事

これらを参考にして下さい。


セルをアクティブにする

Range("セル番地").Activate
または、
Cells(行, 列).Activate

※ActivateはRangeオブジェクトのメソッドです。メソッドについては最後に説明します。

SelectとActivateは、複数セルを選択している場合のみ違ってきます。
例えば、
Range("A1:B10,E11:F20").Select
これを実行した状態で、
Range("F18").Activate
とすれば、セルの選択状態は変わらず、アクティブセルのみF18に移動します。
しかし、
Range("F18").Select
とした場合は、
他のセルの選択状態は解除され、F18セルのみ選択されアクティブになります。


行の選択、列の選択

行の選択
Rows(行位置).Select
列の選択
Columns(列位置).Select

RowsとColumnsにおいてもActivateは出来ますが、使用頻度は極めて低いでしょう。
Rows(行位置).Activateなら、当該行の1行がアクティブになります。
Columns(列位置).Activateなら、当該列のA列がアクティブになります。


セル領域の選択

連続したセル領域の選択には、CurrentRegionプロパティを使います。

CurrentRegionプロパティ
選択範囲を自動的に拡大して、 現在の領域全体が含まれるようにします。
現在の選択範囲は、空白の行と空白の列の任意の組み合わせで囲まれた範囲です。

VBA マクロ CurrentRegion

Range("B2").CurrentRegion.Select

上記の"B2"はB2:D6の範囲であればどのセルを指定しても選択されるセル範囲は同じになります。
B4,C3,D5,C6のように部分的な空欄はセル領域として認識されます。
7行目は空行となっているので、8行目以降は範囲に含まれません。

B8:D9のいずれかのセルを指定した場合は、B8:D9の範囲が選択されます。


メソッドとはプロパティとは

ここまでに出てきた、

Select
Activate

これらは、Rangeオブジェクトメソッドです。
メソッドとは方法・方式で、
オブジェクトに対する動作・操作を指定します
上記以外でも、次回出てくる、セルの削除・挿入もメソッドになります。

オブジェクトは対象物、プロパティはその属性、メソッドは動作を与えます。
エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド
・VBAが表示するメッセージ ・オブジェクトとは ・プロパティとは ・メソッドとは ・プロパティとメソッドの違い ・オブジェクトの階層(親子構造) ・エクセルの言葉であるVBAを日本語に翻訳する ・最終行取得のコードを訳してみる ・VBA用語を覚えることについて ・ExcelマクロVBA入門等の対応ページ




同じテーマ「マクロVBA入門」の記事

第25回.名前付き引数について
第26回.総合練習問題2
第27回.ブック・シートの選択(Select,Activate)
第28回.セル・行・列の選択(Select,ActivateとCurrentRegion)
第29回.セル・行・列の削除・挿入(Delete,Insert)
第30回.総合練習問題3
第31回.セルの書式(表示形式,NumberFormatLocal)
第32回.セルの書式(配置,Alignment)
第33回.セルの書式(フォント,Font)
第34回.セルの書式(塗りつぶし,Interior)
第35回.セルの書式(罫線,Border)


新着記事NEW ・・・新着記事一覧を見る

構成比を合計しても100%にならないと言われた…|ツイッター出題回答 (2022-09-01)
一覧から複数条件(部分一致、範囲)に合致するデータを抽出する|ツイッター出題回答 (2022-08-30)
縦横スピルしないXLOOKUP代替(MATCH+INDEX,FILTER,CHOOSEROWS)|エクセル入門(2022-08-27)
IF関数の論理式で比較演算子を省略したCOUNT系関数を書くのは|ツイッター出題回答 (2022-08-23)
LAMBDA以降の新関数の使用例|エクセル入門(2022-08-22)
数珠順列(配置に条件付き)を全て出力する|ツイッター出題回答 (2022-08-20)
日付時刻のマイナス表示に対応する方法|ツイッター出題回答 (2022-08-17)
LAMBDA以降の新関数について|エクセル入門(2022-08-16)
条件付きの最大値と中央値("A"が2文字の条件)|ツイッター出題回答 (2022-08-14)
VBAマクロと操作対象データの分離について|ツイッター出題回答 (2022-08-11)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.並べ替え(Sort)|VBA入門
8.マクロって何?VBAって何?|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.エクセルVBAでのシート指定方法|VBA技術解説




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ