最近迷うのが、↓ これ。
一度しか登場しない変数は、そもそも変数にすべきか?
例えば、テーブル書式を扱う場合で、こんな風に入力している時。
Sub test() Dim r As Range For Each r In Sheets(1).ListObjects(1).DataBodyRange
VBEの入力支援機能は、一切働かない。少なくとも、我が家のPCでは。
一方、ListObjectを一旦変数にセットすると、こうなる。
Sub test() Dim r As Range Dim Tb As ListObject Set Tb = Sheets(1).ListObjects(1) For Each r In Tb.DataBodyRange
VBEの入力支援機能が働いて、Tb.の時点で入力候補が現れてくれる。
この場合の、「私が考えるメリット・デメリット」は以下のとおり。
メリット
- Tbの型(ListObject)を宣言することで、何を扱っているかが明示される。
- VBEの入力支援機能が働き、「D」を入力しただけで「DataBodyRange」が入力候補として選択される。
- 入力時、正しい道筋を辿っている安心感が得られる。
デメリット
- 変数Tbがここで一回しか登場しないなら、二行も無駄にしている。
- 他の人から見た場合、入力支援機能の恩恵などは関係ない(感じられない)。
私自身の習熟度や好みの変遷に合わせて、その時々の「マイブーム(死語?)」というものが確かにあるわけで。賛否両論、様々な意見があると思うが、今の私は「一旦変数に受ける」派だ。理由は、メリットがデメリットに勝ると思うから。
※半年後には、正反対の意見に変わっているかもしれませんが。
参考まで。