和風スパゲティのレシピ

日本語でコーディングするExcelVBA

読みやすいコードの書き方

固定のセル(Range)を定数(Const)で定義する

「固定セルを定数で扱いたい!」という場面は結構多いです。データシートの上部に固定された、「対象月」や「更新日」のセルとかですね。常に同じRangeオブジェクトをくれる定数がほしいのですが、Constではできませんので、別の方法を使います。

If文は判定回数より読みやすさを最適化すべし

コードの読みやすさと処理速度のバランスに関するお話です。テーマは「Ifの判定回数にどれだけこだわるか」です。単純な比較時間は、実はほとんど0で、別にIfは重複しても問題ありません。Else地獄に陥らないよう、読みやすさを追求していきましょう。

For文をたくさん分割しても処理は遅くならない

マクロの処理速度に関するお話です。今回のテーマは「錯覚しやすいForステートメントの処理速度」です。For R = 1 To 10000 処理A,B,C,D Nextは、For R = 1 To 10000 処理A Next × 4個に分けても、「Rに1を足す×30000回」しか処理の内容に差がありません。

VBAではカウンタ変数に「i」を使うな

Cells(i, 1)をもうやめて、Cells(R, 1)こうしませんか?という話です。複数のオブジェクトを扱う場面が多いExcelVBAにおいて「カウンタ変数は何のカウンタかわかるように命名する」ことは、とても重要なコーディング規約なんじゃないかと思います。

コロン:を使って複数行のコードを1行に書く

VBAでは、「:」を使うことで、複数行のコードを1行に書くことができます。これをマルチステートメントと呼びます。これを使うべきか。結論は、「使った行は読みづらくなるが、代わり全体の流れが読みやすくなるなら使ってOK」です。

アプリケーションハンガリアン+日本語は最強の変数名だ

アプリケーションハンガリアンと日本語変数はとっても相性が良くて、区切りと役割がはっきり分かれて読みやすい上に、キーボードの日本語入力をOFFのままで日本語変数を使えるよ。というお話です。最終目的のgifアニメを張りますので見てみてください。

定数を使って読みやすく変更に強いマクロを書く

データを扱うマクロで、セルの指定をCells(R, 4)やRange("D" & i)のように書いていませんか?列の挿入や削除に対応するのが、すごい面倒と感じている方は必見です。定数を使えば、このマクロを劇的に「読みやすく、変更に強く」することができます。

変数を日本語にすればプログラミングが上達する

変数名・関数名などの識別子は、英語を使う明確な理由がない限り、なるべく日本語で命名するべきです。日本語変数を使うことで、翻訳に労力を割かなくなり、コードが読みやすくなり、全体の流れに集中できるようになり、プログラミングの上達が早くなります。