Excelでセルを複数選択するとき、Ctrlキーを押しながら離れた場所にある複数のセル範囲を選択できます。
このような**「複数のエリア」**をVBAで処理する場合は、Selection.Areas
を使用することで、エリアごとに個別の処理を行うことが可能です。
本記事では、Selection.Areas
を使って離れた位置にあるセル範囲を順に処理する方法を、実用的なコードとともにわかりやすく解説いたします。
目次
コード例:離れた複数エリアに対して番号を割り当てる
Dim idx As Long
For idx = 1 To Selection.Areas.Count
Selection.Areas(idx).Value = "ブロック" & idx
Next idx
コードの解説
Selection.Areas
とは?
Selection.Areas
は、**現在選択されている複数の範囲(エリア)**を、1つずつ順番に扱うためのプロパティです。- 各エリアは
Range
オブジェクトとして扱われ、Selection.Areas(1)
のようにインデックスでアクセスできます。
Selection.Areas.Count
- 現在選択されているエリアの数を返します。
- これを基に
For
ループを構築することで、各エリアを個別に処理できます。
各エリアへの処理内容
.Value = "ブロック" & idx
とすることで、エリアごとに異なるラベルを入力しています。
実行例
たとえば、以下の3つのセル範囲をCtrlキーで選択していた場合:
B2:B4
D2:D4
F2:F4
上記のコードを実行すると、各範囲に対して次のように値が入力されます。
B2:B4
→ 「ブロック1」D2:D4
→ 「ブロック2」F2:F4
→ 「ブロック3」
応用:各エリアに異なる書式を適用する
各エリアに色をつけたり、太字にしたりすることも簡単です。
Selection.Areas(idx).Interior.Color = RGB(200 + idx * 10, 220, 255)
Selection.Areas(idx).Font.Bold = True
注意点
Selection
が連続した範囲である場合、.Areas.Count
は1になります。Selection
が複数エリアでない場合でも正常に動作させたい場合は、事前に.Areas.Count
の確認を推奨します。
まとめ
処理内容 | 使用構文 | 説明 |
---|---|---|
複数範囲の取得 | Selection.Areas | 離れた範囲を扱う |
範囲の数を取得 | .Areas.Count | エリア数を取得 |
個別処理 | Selection.Areas(i) | 各ブロックに対する処理 |
Selection.Areas
を活用することで、表形式データの分割処理・入力漏れの補完・エリア別の装飾など、柔軟で実用的なマクロを作成できます。
業務における効率化や帳票処理の自動化にも非常に役立つテクニックです。