
ExcelVBAにおいて、セル単位で操作をするケースが非常に多いです。
セル単位を操作するにはRangeプロパティを使用してRangeオブジェクトを取得する必要があります。
つまり、RangeプロパティはExcelVBAの中でも基本的なプロパティだといえます。
今回はRangeプロパティで単一セルやセル範囲を参照する方法についてまとめていきます。
Rangeプロパティの基本構文
オブジェクト.Range(セル番号)
オブジェクト
Rangeプロパティを指定するオブジェクトを指定します。
この部分は省略可能です。
省略すると、アクティブブックのアクティブシートを指定していることになります。(マクロを実行したときに開いているもの)
逆に指定してあげるケースは、マクロを実行した際の画面と違うブックやシートに対して操作を行いたいというときになります。
オブジェクトに関しては下記記事をご参照ください。
Excelのオブジェクトの基礎知識まとめ | Excelを制する者は人生を制す ~No Excel No Life~
セル番号
Rangeプロパティで参照したいセル番号を指定します。
セル番号とは”A5″など、通常のワークシート関数でも使用するセルの番地を指します。
使用例①【単一セル】
単一セルを参照する場合は、通常のワークシートと同様にセル番地を”[ダブルクォーテーション]で囲ってあげます。
使用例としてSelectメソッド(対象オブジェクトを選択)を使用しています。(以後の使用例と共通)
1 2 3 |
Sub 単一セル選択() Range("C3").Select End Sub |
マクロの動作イメージ
C3セルが選択されました。
使用例②【離れた単一セル】
離れたセルを参照する際は該当のセルの番地と番地の間に,[カンマ]で区切ってあげます。
1 2 3 |
Sub 離れた単一セル選択() Range("C3,B5").Select End Sub |
マクロの動作イメージ
C3セルとB5セルが選択されました。
使用例③【セル範囲】
セル範囲を参照する場合は起点となるセル番地と終点となるセル番地を:[コロン]でつなげてあげます。(通常のワークシート関数といっしょ)
1 2 3 |
Sub セル範囲選択() Range("B2:B5").Select End Sub |
マクロの動作イメージ
B2~B5セルの範囲が選択されました。
使用例④【離れたセル範囲】
使用例②と③の複合ですね。
1 2 3 |
Sub 離れたセル範囲選択() Range("B2:B4,E2:E4").Select End Sub |
マクロの動作イメージ
B2~B4セルとE2~E4セルが選択されました。
使用例⑤【列全体】
列全体を参照する場合は、列を表すアルファベット部分のみを:[コロン]でつなげてあげます。
1 2 3 |
Sub 列全体選択() Range("B:C").Select End Sub |
マクロの動作イメージ
B・C列すべてが選択されました。
使用例⑥【行全体】
行全体を参照する場合は、行を表す数字部分のみを:[コロン]でつなげてあげます。
1 2 3 |
Sub 行全体選択() Range("2:4").Select End Sub |
マクロの動作イメージ
2~4行目のすべてが選択されました。
使用例⑦【名前付きセル】
ワークシート上で「名前の定義」であらかじめ設定していた「名前」でもセル範囲は選択可能です。
その場合は、”[ダブルクォーテーション]内に該当の「名前」を入力します。
1 2 3 |
Sub 名前付きセル選択() Range("範囲①").Select End Sub |
「範囲①」の部分はサンプルですので、それぞれのワークシートで設定されている「名前」を入力してください。
マクロの動作イメージ
「範囲①」で定義づけしていたC2:E6の範囲が選択されました。
使用例⑧【セル参照】
あまり美しいコードではありませんが、ワークシート上に入力している数字や文字列もRangeプロパティ上で参照することが可能です。
今回はB2セルに入っている「1」をセル番号に組み込みたいとします。
その場合、Rangeプロパティ内に列を示すアルファベット部分のみ”[ダブルクォーテーション]をつけ、そのあとに&[アンパサンド]、最後にRange(“B2”)とRangeプロパティ内にRangeプロパティを入れてあげるとB2セルの「1」の値を参照することが可能になります。
1 2 3 |
Sub セル参照() Range("C" & Range("B2")).Select End Sub |
マクロの動作イメージ
C1セルが選択されました。
使用例⑨【変数参照】
同じプロシージャ内で設定している変数もRangeプロパティの一部として使用可能です。
今回は変数iが「3」を示しているとします。
その場合、Rangeプロパティ内に列を示すアルファベット部分のみ”[ダブルクォーテーション]をつけ、そのあとに&[アンパサンド]、最後に変数「i」を入れてあげます。
先ほどの使用例⑧よりもコードが簡潔であるため、あらかじめセルの値を参照したい場合は変数に格納してから行なうと良いですね。
1 2 3 4 5 |
Sub 変数参照() Dim i As Integer i = 3 Range("C" & i).Select End Sub |
マクロの動作イメージ
C3セルが選択されました。
まとめ
Rangeプロパティは基本だといえ、使用方法があまりにもパターンが多いので、慣れるまでは大変かと思います。
もし、職場でマクロ付きのブックがあれば、VBEの中身を見てどのような使われ方をしているかを読んでみることも大変勉強になりますよ(・∀・)
いろいろとコードに試し打ちして動作確認したりとしていると、早く覚えることができておすすめです。