特定の範囲に名前を付ける
一つのセル、または、特定の範囲に名前を付けるには、セルを選択した後にワークシートの左上をクリックして名前を入力する。
例えば、セルA1 に “hoge” と名前を付けてみた。
付けた名前を管理しているのは、メニューより「挿入 > 名前 > 定義」。ここで定義した名前を追加・削除できる。
先ほど定義した “hoge” が表示されている。
ちなみに、ワークシートごとに名前空間があるのではなく、一つの Excel ファイルにおいて一意な名前を付けることができるようだ。
VBA で名前を付けたセルの値を参照
メニューより「ツール > マクロ > Visual Basic Editor」を選択し、標準モジュールを作成。(「挿入 > 標準モジュール」)
さて、セルの値を参照するにはどうすればいいのだろう? Visual Basic Editor 内において F1 でヘルプを表示し、「Microsoft Office Excel オブジェクト モデル」を見ると、Cell というのは見当たらず。
ところで、上記のように名前を付けるとき、範囲を指定して名前を付けることができた。ということは Range で操作できそうだ。
ヘルプの Range コレクションによると、
セル、行、列、1 つ以上のセル範囲を含む選択範囲、または 3-D 範囲を表します。
標準モジュールにプロシージャを定義した。
Sub test() MsgBox Range("hoge").Value End Sub
プロシージャ内で、F5 または F8 を押して動作を確認。
ちなみにセルを表わすものは、Worksheets オブジェクトのプロパティとして表現されていた。
2コメント:
Sheet1!hoge と、シートのローカル名として登録したほうが複数ワークシートで衝突しないので便利ですよ。
シートごとに定義したい場合は、自前で管理するしかないですよねぇ。
できれば Excel の方でシートごとに名前空間を管理してくれて、hoge と名前をつけけたセルに対して、Sheet!hoge と参照できるとよかったになぁと思います。
コメントを投稿