【VBA】離れた複数のセル範囲(エリア)を個別に処理する方法|Selection.Areasの使い方

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 を活用することで、表形式データの分割処理・入力漏れの補完・エリア別の装飾など、柔軟で実用的なマクロを作成できます。
業務における効率化や帳票処理の自動化にも非常に役立つテクニックです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次