VBAでExcelのワークシートを加工する場合「名前」の使い方を知っている方が良い

ブログ コンピュータ
ブログ

Excelの「名前」という機能は、普通にExcelで作表作業をする場合、まず使わない機能だと思います。しいて言えば印刷範囲を設定すると「Print_Area」という名前が自動的に定義されるぐらいで、それにしても利用者側が意識する場面はほぼ無いと思います。

では、この「名前」機能を使うと何が嬉しいかと言いますと、複数のセルをまとめて範囲として扱い、その範囲に「名前」を付けることで、VBA側から操作することが出来ます。
セルの座標は絶対値ですが、VBA側からは「名前」を介してアクセスするため、エクセルのシートのレイアウトが変更された場合、「名前」で定義しているセルの座標を変更するだけで、VBA側の変更を最小限又は変更なしにすることが出来ます。

VBA側から見た場合、「名前」はセルの範囲を表す定数で、ConstやEnumの様な使いかたが出来ます。もちろんConstを使わず直接セルの座標を指定する様なコーディングも可能ですが、操作するワークシートのレイアウトを一部変更しただけで全面的にソースコードを見直す必要が出てきますので、余り良い方法とは言えません。

上手く名前を付けることが出来るようになるには、仕組みの全体を見通す必要がありますが、先に名前を決めてそれにあわせて全体構成を考えると見通しが良くなる感じがします。

VBAを使うことを前提のお話でしたが、エクセルでテンプレートとなるワークシートを作成する場合も名前を意識的に付けることでレイアウト変更に強いテンプレートを作成することが出来るので覚えておいた方が良いと思います。

とまぁ、言うてますが、10年以上前に自分がかいたVBAを触る場面があり、そのVBAが「名前」を使っていて、これは何だろう?とすっかり忘れておりました。結構複雑なワークシートの割にVBA側がやたらとシンプルになっており、なぜこれで動くのか、かなり不思議に感じました。
せっかく「名前」を使ってシンプルに仕上げたのに作った当人が忘れてしまっては意味がありません。逆に昔の自分が将来のことを考えてこんな手の込んだ真似をしたのか、驚いた次第でございます。

以上

コメント