2023年4月18日【ID:0】
【ExcelVBA】VBA開発でインデントが重要な理由
VBAを始めたばかりの方によくあることですが、以下のようにインデント(字下げ)がないコードをたまに見ます。
このような書き方は本当によくないです。
この処理を日本語で表現すると以下のようになります。
機能[Sample]は、1行目から1行ずつ繰り返してその中でA列の値がTrueの場合はB列に〇を入力するという作業を100行目まで繰り返して終了する。
この文章に関して、若干読みにくいと感じられた方は多いかと思います。
その理由は、一文が長くて句読点が少ないからです。
VBAのコードは、「Subで始まったらEnd Subで終わる」「Forで始まったら、Nextまで繰り返す」「Ifで始まったら、End Ifで終わる」というような要素の入れ子になっています。
この入れ子が、ぱっと見で分からない書き方は、保守的であるとは言えません。
このコードに対して、エラーが発生した場合や、機能を追加したい場合、どこを修正すべきなのかが分かりにくいからです。
例えば、この機能に「A列の値がTrueの場合はC列に×を入力する」という機能を追加する場合、どこに追加すべきなのかが直感的に分かりにくいです。
では、どうしたらよいのかというと、入れ子になる場合は、インデント(字下げ)を行うことです。
※インデントは、Tabキーを押すことで半角スペースが4つ入力されます。(デフォルト設定の場合)
以下のようにするだけでも、見やすさは天と地の差があります。
この処理を日本語で表現すると以下のようになります。
機能[Sample]というものがある。
この機能は、1行目から100行目まで1行単位で以下の処理を行う。
・対象行のA列の値がTrueの場合は、対象行のB列に〇を入力する
1つ1つの文章が短くなり、比較的読みやすい文章かと思います。
補足
プログラミング言語のPythonでは、インデントがないと正しく実行できません。
そのくらいインデントを行うことは、プログラミングをする方にとって重要になります。
逆に言えば、インデントの有無を見るだけで、プログラミングの経験値が瞬時に分かります。
「毎回VBAで開発してくれているから、あの方はVBAができる人だ!」と思っていた人でも、蓋を開ければ、サイトからのコピペのみで本人は半分以上理解できていないというケースがあります。
このケースの場合、ほとんどがインデントが正しくないです。
このようなシステムを使い続けるのは、かなり危険です。(データの紛失や個人情報の漏洩など)
VBAに限らず、プログラミングを行う場合は、インデントを意識する必要があります。