基本パターンを知っておこう
セルを選択には、主に4つのプロパティを状況に応じて使い分けます。
- Rangeプロパティ
- Cellsプロパティ
- Rowsプロパティ
- Columnsプロパティ
Rangeプロパティ
1つ目は「Range」を使ったセル指定です。
「Range(“A1”)」のように指定したいセルや範囲を「”」ダブルクォーテーションでくくります。
1つのセルを選択する
例)A1セルを選択
例)C3セルを選択
セル範囲で選択する
例)A1セル~C3セル
例)B1~C4セル
例)2行目全体
例)B列全体
Cellsプロパティ
2つ目は、「Cells」を使ったセル指定です。
Cellsを使う場合、対象セルの「行と列」の位置を指定し、Cells(行、列)と書きます。
1つのセルを選択する
例)A1セルを選択
例)C1セルを選択
例)H2セルを選択
実は、カッコの中の「列」はアルファベット表記することもできます。例えばH2セルの場合、まずHが何列目なのかを考えなくてはいけません。ちょっと面倒ですよね。そんな時は「”H”」というように、直接アルファベットで指定できるのです。
RangeとCellsは、状況に応じて使い分けます。注目してほしいのが、Cellsは「行・列」で指定していることです。プログラミングの世界では数字を増やしたり減らしたりすることで処理を繰り返すことがあります。
このように繰り返し処理の時は、行と列を用いる「Cells」を使用します。繰り返し処理の詳しい内容は、ここではあまり気にしなくても大丈夫です。
「繰り返し処理をするときはCellsを使うのかぁ」くらいで覚えておいてください。
Rowsプロパティ
3つ目は、Rowsプロパティです。行全体を指定する時に使います。行全体を選択する例として、先ほどRange("2:2")を書き方を紹介しましたが、結果としては同じです。
1つの行を選択する
例)2行目
行範囲を選択する
例)1~3行目
Columnsプロパティ
4つ目は、Columnsプロパティです。列全体を指定する場合に使用します。列の指定は「Range("B:B")」という風に書くこともできますが、結果は同じです。
1つの列を選択する
例)B列
列範囲を選択する
例)B列~D列
変化に強いセル範囲選択(自動的に範囲を拡張してくれる)
基本編では、直接指定のセルや行や列を指定していました。しかし、実務ではそうはいきません。データが追加されたり、削除されたりすると選択したい範囲も変わってしまいます。その為、データ範囲の増減に応じてセル範囲も自動的に対応するようなコードの書き方を知っておくことも重要です。
では、「変化に強い」セル範囲の選択方法パターンを紹介します。
「Current Region」を使う
例えば、下図のデータをすべて選択したい場合、はどうしますか?基本は「Range("B2:E12").Select」と書きます。
しかし、この書き方だと、1行増えたとしても追加され時に追加行までは選択されません。
このような場合には「Current Region」を使ってセル選択範囲を自動的に拡張できるようにしましょう。
「Current Region」=セルの全選択と覚えます。
早速、結果を見てみましょう。
先頭を「Range("B2")」としていますが、ここのセルはデータ範囲の中であればどのセルでも大丈夫です。例えば「Range("D4").CurrentRegion.Select」と書いても同じ結果が得られます。
ただし、Current Regionを使うときには注意点があります。
それは「データ範囲」を選択するという点です。「データ範囲」とは周りを空白セルで囲まれた1つのセル範囲のかたまりを指します。このことを理解していないと思わぬ事態が起きます。
例えば、下図のケース。9行目のデータが削除されていたとします。この時、B2セル~E13 セルを範囲選択したいと思って、下記のコードを書いてもダメです。空白で囲まれているB1セル~E8セルが1つのデータ範囲としてみなされてしまいます。
もしも、このように中間の行が削除されるような場面では、下記のRange(左上セル,右下セル)というコードが有効です。
Range(左上セル,右下セル)を使う
「Range(左上セル,右下セル)」 と書くことで、左上のセルと右下のセルの範囲をすべて選択してくれます。これが基本パターンです。
もしも、行が追加/削除された場合に自動的に範囲を縮小・拡張させるためには、右下の最終行を取得すればよいのです。その場合は、下記のコードになります。
\ せっかく勉強するならVBAの資格を取ろう! /
文系にもオススメ
-
VBAエキスパートに合格するには?勉強時間と対策を解説
続きを見る