Excelでは、セルに任意の名前を付けることができる。
任意のセルを選択した状態で、数式バーの左にある名前ボックスに名前を入れてEnterで確定させるだけだ。
セル範囲に対しても同様の操作ができる。
付けた名前は数式で参照させることができる。
行や列を挿入すると、名前が指すセル範囲も自動的に移動してくれる。
一度つけた名前を消したり範囲を変更するには数式タブから名前の管理を開く。
すると次のようなダイアログで編集や削除ができる。
さて、前置きが長くなったが、実はこの「名前」はVBAからシートのRangeプロパティでも参照できる。
標準モジュールに次のコードを入力して実行すると、
Sub hoge()Dim r As Range ForEach r In Range("データ範囲") Debug.Print r.ValueNextEndSub
このとおり。
さて、データの個数が固定されている場合はこれで十分だが、可変の場合はいちいち名前を変更するのはわずらわしい。
そんな時はテーブル機能を利用する。
ホームタブからテーブルとして書式設定を選択し、
データ範囲を選択してOKをクリックする。
するとテーブルが作成される。
テーブル内のセルを選択すると、デザインタブが表示されるので、そこでデザインを変更したりテーブルの名前を変えたりできる。
デザインタブのプロパティグループにテーブル名があるので、ここを編集することでテーブル名を変更できる。
そしてこのテーブル名も先ほどの「名前」と同じようにRangeプロパティで参照できるのだ。
Sub hoge()Dim r As Range ForEach r In Range("テーブル1") Debug.Print r.ValueNextEndSub
しかもデータを追記すれば自動的に拡張される。
テーブルに対してVBAでもう少し高度な操作をしようと思ったらListObjectを使用することになるが、Rangeなら気軽に使えて良い。
ただし、「名前」や「テーブル名」はユーザーが変更可能な領域なので、どんなブックにでも使えるテクニックというわけではない。
利用シチュエーションによって最適なセルの指定方法は違うので、色々な方法を知って使いこなせるようになりたい。