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

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

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


マクロVBAで、セル、行、列を選択するときの記述について説明します。
まずは、セルの選択について説明する前に、
選択セルアクティブセルについて、 説明する必要があります。


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

マクロ VBA セルの選択

この状態で、
選択セルは、B2~C6の10個のセルです。
アクティブセルは、B2セルになります。
選択セルは、1つの領域(連続した範囲)である必要はなく、
Ctrlを押しながら選択した場合は、複数の領域が選択できます。

しかし、アクティブセルは、常に1つです
アクティブブックのアクティブシートにのみ存在します。
アクティブではないシートの、最終アクティブセルは、
通常ははアクティブセルとは呼びません。

マクロでアクティブセルを参照する時は、
ActiveCell

と書きます。
文字を入れる場合は、
ActiveCell = "文字"
と書きます。

しかし、マクロにおいて、ActiveCellを使う事は無いでしょう。
使う事は無いでしょうと言うより、使わない方が良いでしょうということです。

セルの選択

Range("セル番地").Select
または、
Cells(行, 列).Select
※SelectはRangeオブジェクトのメソッドです。メソッドについては下で説明しています。

複数セルの指定方法は、
第9回.Rangeでのセルの指定方法
前回までに出てきたRangeの使い方は、Range("A1") このように書きくことで1つのセルを指定する場合でした。複数のセル範囲を指定する場合、矩形のセル範囲、行全体、列全体、特殊なセル範囲 これらの指定方法を見ていきましょう。複数のセル(矩形のセル範囲) 複数のセル(矩形のセル範囲、)を指定する場合のVBAの書き方です。
第10回.Range以外の指定方法
Rangeの指定で、あらゆるセルおよびセル範囲は指定できるのですが、マクロで使う場合は、ちょっと使いづらい場合があります。"A1"や"B5"と言うような文字で指定するのでは何かと不便です、もっと、プログラムっぽい(笑)指定方法があります。
第11回.RangeとCellsの使い方
VBAではセルを指定する方法としてRangeとCellsがあります、RangeもCellsも、どちらもRangeオブジェクトでセルを指定するものです。どちらを使ったらよいのでしょうか、どう使い分けたらよいのでしょうか、実際のVBA記述では、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なら、当該行のA列がアクティブになります。
Columns(列位置).Activateなら、当該列の1行がアクティブになります。

セル領域の選択

連測したセル領域の選択には、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入門」の記事

第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 ・・・新着記事一覧を見る

VBAで写真の撮影日時や音楽動画の長さを取得する|VBA技術解説(1月10日)
ツイッターで出されたVBAのお題をやってみた|エクセル雑感(1月13日)
イベントプロシージャーの共通化(Enter,Exit)|ユーザーフォーム入門(1月13日)
Rangeオブジェクトの論理演算(差集合と排他的論理和)|VBA技術解説(1月10日)
イベントプロシージャーの共通化|ユーザーフォーム入門(1月7日)
コントロールの動的作成|ユーザーフォーム入門(1月6日)
Evaluateメソッド(文字列の数式を実行します)|VBA技術解説(1月5日)
エクスポート(PDF/XPS)|VBA入門(1月2日)
分析関数(OVER句,WINDOW句)|SQL入門(12月25日)
取得行数を限定するLIMIT句|SQL入門(12月21日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技




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


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



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