ピッシーのメモ帳

気になった情報の保管庫

Excel VBAのコードを読みやすくする方法(初心者向け)

私はこれまでいろいろなExcel VBAのコードを見てきたが、主に初心者やプログラミング経験が浅い方に向けて「こうしたらもっと読みやすくなるよ」という書き方を紹介する。

 

適切なインデント(字下げ)をかける

インデント(字下げ)とは、行の先頭にタブや空白文字を挿入して文字の開始位置をずらすこと。これをやっているコードとやっていないコードでは、読みやすさが全然違う。

インデントには、タブもしくは半角スペースを使用する。半角スペースを使う場合、一般的には2文字か4文字分を使うことが多いだろう。

私がいろいろなExcel VBAのコードを見てきて思うのは、インデントがかけられていないか雑なコードが本当に多いということ。なので、最低限適切なインデントをかけるだけでずいぶんと読みやすいコードになるだろう。

NG例

インデントなし
Sub Sample()
Dim a as Integer
Dim b as Integer
a = 10
b = 20
If a > 0 Then
Msgbox a
If b > 0 Then
Msgbox b
End If
EndIf
End Sub
インデントが雑
Sub Sample()
Dim a as Integer
Dim b as Integer
a = 10
b = 20
If a > 0 Then
Msgbox a
If b > 0 Then
Msgbox b
End If
EndIf
End Sub

NG例のようなインデントのコードは本当に多い。正直こういったコードはあまり読みたくはない…。

改善例

Sub Sample()
Dim a as Integer
Dim b as Integer
a = 10
b = 20
If a > 0 Then
Msgbox a
If b > 0 Then
Msgbox b
End If
EndIf
End Sub

NG例のコードに比べて、読みやすくなったのが分かるだろうか。

インデントのかけ方が分からないという人は、処理のかたまりをイメージすると良いかもしれない。改善例のコードを処理の段落ごとに分けると下記画像のようになる。

コードは目で見て読むものなので、視覚的な分かりやすさがコードの読みやすさにつながる。改善例のコードだと視覚的にコードのかたまりが分かるので、例えば「黄色の処理は2番目のIf文が真の場合の処理だ」と分かる。

このように、目で見て処理が分かるようにインデントをかければある程度読みやすくなる。

コメントを使う

Excel VBAにはコメント機能がある。これをうまく使うことで、どのような処理を書いたのかが後で思い出しやすくなる。「コードだけ見れば何やってるか分かるだろ」と思うかもしれないが、時間がたつとなぜそう書いたのかを忘れてしまうもの。なので、忘れそうだと思ったらちゃんとコメントを書いておくこと。

Excel VBAでは、先頭に「'(シングルクオーテーション)」を入れることでコメントにすることができる。

'コメント1
Dim a as Integer 'コメント2

コメントはプログラム実行時には無視されるため、いくら書いても処理されることはない。

変数の宣言を強制する

読みやすさとは少し違うが、私はExcel VBAを使う上ではこの設定は必須だと考えている。

多くのプログラミング言語では、変数という入れ物を使う前にあらかじめ「名前」と「データ型」を設定する。この作業は一般的に「変数の宣言」と呼ばれているが、初期状態のExcel VBAでは変数は宣言しなくても使えてしまう。この仕様が、時に思わぬバグを引き起こす原因になってしまうことがある。

これを防ぐために、VBAエディターには変数の宣言を強制させる設定項目がある。この設定を入れることで、意図しない変数に関するエラーを回避することができる。*1

この記事では、変数の宣言を強制する設定の方法だけ紹介する。詳しく知りたい方は、以下のリンク先の記事が詳しいので参考にしていただければ。

officetanaka.net

設定方法

1.VBAのエディターを開き、「ツール」→「オプション」を押す。

2.「変数の宣言を強制する」にチェックを入れ「OK」を押す。

おわりに

コードを読むのは自分ではなく他人だということを意識してほしい。たとえ自分しか読まないコードであっても、今の自分と未来の自分は同じではない。今の自分がコードを理解できていても、未来の自分が理解できるとは限らない。雑なコードを書くと後で「なんでこう書いたんだろう…」と悩むことになる。

また、プログラムのコードは一度書いたら終わりではない。コードを書いた後、必要に応じてメンテナンスをする場面が出てくる。だからこそ、できるだけ読みやすくしておく必要がある。

もっと詳しくコードの書き方について知りたい方は、リーダブルコードという本を読んでみるのがいいだろう。

www.oreilly.co.jp

この本では、コードを読みやすくするためのテクニックが数多く紹介されている。私自身も参考にしている部分がいくつかある。気になった方は手にとっていただければ。

*1:私の経験では、初心者の方は数値と文字の違いを理解していないことがある。そのような段階の人に、変数のデータ型の違いを意識をさせるという意味でもこの設定は有効だと考えている。