こんにちは!ぐーです。
日頃からVBAで業務効率化に取り組んでいると、ふとこのような瞬間に直面することはありませんか?
「おや、このコード……右に長くなりすぎているな」
夢中で記述していると、つい1行に情報を詰め込みすぎてしまい、画面の端を越えて「横スクロール」を強いられる状態になってしまうことがあります。
実は、この状態は「バグ(不具合)の温床」になりかねません。画面外に隠れた部分のミスは、視覚的に見落としやすいためです。
そこで今回は、長いコードを劇的にスッキリさせる記号、「 _ (アンダースコア)」を活用した改行テクニックをご紹介します。
なぜコードに「改行」が必要なのか?
例えば、小説を想像してください。改行が一切なく、右に延々と文字が続いていたら読む気が失せますよね? プログラムも同じです。
プログラムもそれと同様です。「人間が一目で理解できる適切な長さ」に収めることが重要です。
このひと工夫だけで、未来の自分やチームメンバーがコードを保守(メンテナンス)する際の負担がぐっと軽くなります。
魔法の記号「半角スペース + アンダースコア」
VBAでは、行の最後に「半角スペース」と「_(アンダースコア)」を入れることで、「この命令は次行へ継続している」と認識させるルールがあります。
百聞は一見に如かず。実例を見てみましょう。
【Before】改行なしの長いコード
これは、メッセージボックスを表示する単純なコードですが、長すぎて読みにくいです。
Sub LongCodeSample()
MsgBox "データの集計が完了しました。処理件数は500件です。エラーはありませんでした。ファイルはデスクトップに保存されています。", vbInformation, "処理完了のお知らせ"
End Sub
【After】アンダースコアで改行したコード
ここで「 _」の出番です。意味の区切りで改行を入れてみましょう。
Sub CleanCodeSample()
MsgBox "データの集計が完了しました。" & _
"処理件数は500件です。" & _
"エラーはありませんでした。" & _
"ファイルはデスクトップに保存されています。", _
vbInformation, _
"処理完了のお知らせ"
End Sub
いかがでしょうか?
「メッセージの内容」「アイコンの種類」「タイトル名」の3要素が縦に並び、一目で構造を把握できるようになったはずです!
【さらに応用】メッセージ自体も改行してよみやすくする!
ここで、さらに一歩進んだテクニックをご紹介します。
先ほどのアンダースコアは、あくまで「コードの見た目」を整えるためのものでした。しかし、これだけでは実行時に表示されるメッセージは長いままです。
「表示される文章自体も改行して、もっと読みやすくしたい!」 そんな時は、改行コードであるvbCrLfを組み合わせましょう。
Sub SuperCleanCode()
MsgBox "データの集計が完了しました。" & vbCrLf & _
"処理件数は500件です。" & vbCrLf & _
"エラーはありませんでした。", _
vbInformation, _
"処理完了のお知らせ"
End Sub
【注意点】直前の「半角スペース」をお忘れなく!
初心者が陥りやすいポイントですが、アンダースコアを単体で記述するとエラーが発生します。必ず「半角スペース + アンダースコア」をセットで運用しましょう。
- × 不可: MsgBox “完了”&_ (スペースがないのでエラー)
- 〇 優良: MsgBox “完了” & _ (スペースがあるのでOK!)
【参考】他の言語(Pythonなど)ではどうなの?
ちなみに、最近人気のPythonでは、カッコ () の中であれば、特別な記号なしで改行が可能です。
また、行末に \(バックスラッシュ)を置いて継続を示すこともあります。
プログラミング言語ごとに異なる「作法」を比較してみるのも、面白い発見がありますね。
まとめ
VBAでコードが長くなったら、「半角スペース + アンダースコア」。
これだけで、コードの可読性は劇的に向上します。「ただ動くコード」から「読みやすく美しいコード」へ。 ぜひ今日からのプログラミングに取り入れてみてください!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント