変数の命名

『何用に指定した変数かを、変数の名前で判別できるようにする』
言い古された注意または警告。

職場で使うVBAのプログラムが必ず持つ不変の特性。
「他人が読む」
「時間が経ってから自分が読む」

メモを殴り書きのまま清書せずにいると、他人に読ませることも、自分が読み返すことも困難になるのと同じで、苦しい解読作業がつきまとう。

文章を書くときに閃きが大切であるように、プログラミングにも閃きで対処する瞬間がある。
「解読作業」とは使う頭の部位が異なるので、余計な作業でプログラミング思考が中断され、せっかくの閃きが二度と思いだせなくなる悲しさを味わわぬよう、VBAのコードも読みやすく作っておくに越したことはない。

結局のところ、読みやすい造りの文章を、素早く書き上げていく感性は、文系も理系も同じだと思う。

たとえば……

Dim lastrow as Long(最終行の行情報を意味する「lastrow」には、実行中に認識されたセル位置の行数が、整数で代入されるという『変数の宣言』)

最終行(ラストロウ)だからlastrowというのは安直だが、安直だからこそ初学者にはわかりやすい。

as LongはLong形式(長整数型)で、代入できる数値に限度はあるけれど、Excelで表示される最終行程度の数字なら余裕で収まる。

「最終行の行番号(数値)」ではなく、「最終行のセルに入力された文字列の値」を代入したいならas Long の部分をas Stringと書けばString形式(文字列)専用の変数として使える。

もしも、いくつかの列の最終セル情報が同時に必要な場合は、変数を分ける。
「lastrowA(A列の最終行)」「lastrowB(B列の最終行)」という具合に、Excel列のアルファベット表記を付け加えた変数を、別々に定義すればよい。

ちなみに、LastRowとしたほうが英語表記としては読みやすいが、先頭が大文字になっているとLongとかStringなどデータの型指定や、IfFor..Nextなどのステートメントに混ざって読みづらいので、初学者としては「自前部分」であることが一目瞭然なように、先頭大文字形式の変数宣言はしないことにしている。

要は、いつ見てもlastrowは最終行の情報を扱うアイテムであることが分かればよい。
知ってる単語がちりばめられた英文を読む場合を想像すればわかるが、知ってる単語数が増えれば増えるほど「この文章では、何となくこんなことを言っているな」とイメージ出来るのと同じことになる。

変数宣言が味方になると頼もしいのは、こういう感覚が身についていくからだ。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする