マクロの行数が増えてくると、どこからどこまでが関係しているのか、
パッツと見てもわからなくなってくるときがあります。
あとで、改良したり、バグを取ったりすることを考えると、メンテナンスしやすいように
見やすく書いておくことが重要です。
Sub test() Dim R As Long Dim 合計 As Integer For R = 1 To 10 合計 = 合計 + Cells(R, 1) Next R MsgBox 合計 End Sub |
これは、タブを使ってない例です。 どこからどこまでがひとつのまとまりなのか、 わかりにくですね。 |
Sub test() Dim R As Long Dim 合計 As Integer For R = 1 To 10 合計 = 合計 + Cells(R, 1) ←A Next R MsgBox 合計 End Sub |
これは、タブを使った例です。 For 〜 Next文の中なので、 タブを使ってグループとしてまとめています。 また、全体としてタブを使って右にずらしてありますが、 モジュールの中にいくつものプロシージャを書くとき、 この方が区切りがわかりやすくなります。 |
プロシージャの内容は、作っているその時なら、その構造や変数の意味を覚えていますが、
時間が空くと、自分がどのようにしてプロシージャを組み立てていったのか忘れてしまいます。
忘れてしまうと、その構造をまた理解するのに、大変時間がかかってしまいます。
そこで、後々、改良することや誰かに手渡すこともあると考え、要所要所にコメントを入れることが大切です。
コメントは、半角で「'」と入力してから書きます。
そうすると、それから後は、プロシージャ上ではコメントとして無視されます。
Sub test() Dim R As Long '行の位置(長整数型で) ←@ Dim 合計 As Integer '合計 ←A '---- データの有無チェック---- ←B If 最初 = 0 Then MsgBox "データがありません。" Exit Sub End If '---- 合計を計算する ---- ←C For R = 最初 To 最後 合計 = 合計 + Cells(R, 1) Next R MsgBox 合計 End Sub |
@ 行の位置を代入するためと、メモしています。 また、最終行が32767を越えるため、整数型では オーバーフローしてしまうため、長整数型にしたことも メモしています。 A 合計に使うことを、メモしています。 B この先、データのチェックをする部分であることを メモしています。 C この先、合計を計算する部分であることを メモしています。 |
これは、ひょっとしたら賛否両論があるかもしれません。
日本語を使うことで、日本語に対応していない環境では、動かないことが出てくるかもしれません。(確認はしてませんが)
しかし、プロシージャを組んでいく上で、ひと目で意味がわかることのメリットは莫大です。
効率よくプロシージャを組むために、変数名やプロシージャ名、ユーザー定義関数名などに、日本語を使うことをお勧めします。
日本語のままでは不具合が発生する場合は、日本語表記をアルファベットに置換してください。
Sub test() Dim R As Long '行の位置(長整数型で) ←@ Dim goukei As Integer '合計 ←A '---- データの有無チェック---- ←B If saisyo = 0 Then MsgBox "データがありません。" Exit Sub End If '---- 合計を計算する ---- ←C For R = saisyo To saigo goukei = goukei + Cells(R, 1) Next R MsgBox goukei End Sub |
上で使ったプロシージャを、コメント以外ローマ字に直してみました。 非常にわかりにくいですね。 漢字混じりの日本語になっていると、一瞬で意味が分かるので、 コメントの量を減らすこともできます。 また、引数をもっているサブプロシージャやユーザー定義関数では、 プロシージャ作成時に引数の名前やタイプを表示してくれるので、 その引数が何を意味しているのかが、すぐにわかります。 下画像の、Sub test6() のところの、『Call 色付け( 』を見て下さい。 ここまで入力してきたら、変数名が表されました。 |
プロシージャ内のステートメントの1行が長すぎると、とても見にくくなります。
そういうときには、そのステートメントの中で改行するといいですね。
改行するにあたってはルールがあるので、それを忘れないようにしましょう。
Sub test25() MsgBox "こんにちは、" & vbCr _ ←@ & "元気ですか?" End Sub |
@ ここのところで、改行をしています。 改行にはルールがあって、 半角で、空白+_(アンダーバー) を記入してから改行することです。 こうすると、横に長くならずにプロシージャを書くことができます。 |