VBAのFor~Next文やFor Each~Next文で、Nextの後ろに変数を書くかどうかについてのツイートをまた見かけました。
適切にインデントを入れ、プロシージャの分割を行うなどしてForとNextの距離が遠くないなら、書かなくてもイイと思っています。しかし、初学者の方には、Nextの後ろにも変数を書いておくことを、私はおすすめしています。
拙著『いちばんやさしいExcel VBAの教本』でも、Nextの後ろに変数を書いたコードをご紹介しています。
初学者の方が書いたコードの場合、インデントの位置が揃えられていないことが結構あることと、ForとNextがかなり離れてしまうケースが少なくないことが、その理由です。
インデントのずれ
VBAに慣れている方なら、ForとNextのインデントは揃っている状態を当然と考えるはずですが、For~Next文がまだ自分のものになっていない初学者の場合はそうとは限りません。
私の観測範囲では、ForとNextのインデント位置がずれていることに気付けない方は、決して少数派ではありません。
更に、実例をご覧になったことのない方には信じられないかもしれませんが、NextのインデントをForに揃えるのではなく、より深くした状態を読みやすいと感じる方さえ(もちろん多数派ではありませんけれども)どうやら数パーセント程度はいらっしゃるように、多くの初学者の方と接してきた私は実感しています。
ForとNextの距離
プログラミングに慣れた方なら、プロシージャの分割を当然行うはずですが、初学者の場合そうではありません。
むしろ分割されたプロシージャを、読み辛いと感じてしまう方も結構いらっしゃいます。
分割が行われなければ、プロシージャは長くなり、ForとNextの間にたくさんのコードが書かれ、ForとNextがかなり離れてしまうこともあります。
コードは読む人のために書く
特にループが複数存在しているときに、ForとNextの距離が離れ、更にインデントが揃っていない場合、Nextの後ろに変数を書いておくことは、コード読解の難易度を下げてくれるはずです。
逆に、コードを読むときにNextの後ろに変数が書かれていても、(自分の好みではないという以外に)デメリットはないはずです。
VBAのコードは、将来読む人の負荷を少しでも下げることを考えて、まずは書かれるべきだと私は考えています。もちろん未来の自分も、コードを書いている今の自分とは別の読む人です。
こういいながら、自分が昔書いたコードを見て、酷いなと思うことはよくあるのですが...。
最終更新日時:2019-03-25 14:52
Home » いちばんやさしいExcel VBAの教本 » Nextの後ろに変数を書く理由