一旦、変数に入れるべきか否か。

最近迷うのが、↓ これ。

一度しか登場しない変数は、そもそも変数にすべきか?

例えば、テーブル書式を扱う場合で、こんな風に入力している時。

Sub test()
    Dim r As Range
    For Each r In Sheets(1).ListObjects(1).DataBodyRange

VBEの入力支援機能は、一切働かない。少なくとも、我が家のPCでは。
f:id:Infoment:20190206222540g:plain

一方、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.の時点で入力候補が現れてくれる。
f:id:Infoment:20190206223021g:plain

この場合の、「私が考えるメリット・デメリット」は以下のとおり。

メリット
  1. Tbの型(ListObject)を宣言することで、何を扱っているかが明示される。
  2. VBEの入力支援機能が働き、「D」を入力しただけで「DataBodyRange」が入力候補として選択される。
  3. 入力時、正しい道筋を辿っている安心感が得られる。
デメリット
  1. 変数Tbがここで一回しか登場しないなら、二行も無駄にしている。
  2. 他の人から見た場合、入力支援機能の恩恵などは関係ない(感じられない)。

私自身の習熟度や好みの変遷に合わせて、その時々の「マイブーム(死語?)」というものが確かにあるわけで。賛否両論、様々な意見があると思うが、今の私は「一旦変数に受ける」派だ。理由は、メリットがデメリットに勝ると思うから。
※半年後には、正反対の意見に変わっているかもしれませんが。

参考まで。