ExcelVBA入門第7回 インデントとコメントアウト
プログラムは、書く人のクセが出るものですが、やっぱり英数字の羅列なので整理整頓して書かないとわけがわからなくなってしまいます。そんなコードを、できるだけわかりやすく書いておくために必要なのがインデントとコメントアウトです。
インデント
例えば、こんなソースコードがあります。
Sub Test() Dim i As Integer i = InputBox("数値を入力して下さい。") If i <= 10 Then MsgBox "変数iは10以内です。" End If End Sub
全部左詰めしてありますが、これだとどこからどこまでがまとまりになっているのか分かりにくいです。ひとつずつ、属性のある部分を字下げ(インデント)してあげます。
まずは、Sub~End Subの中に入っている部分(2~6行目)を全部選択して、[Tab]キーを押してみて下さい。
Sub Test() Dim i As Integer i = InputBox("数値を入力して下さい。") If i <= 10 Then MsgBox "変数iは10以内です。" End If End Sub
どうでしょう? Sub~End Subに囲まれている部分が分かりやすくなったと思いませんか?
他にインデントできる場所はないでしょうか? If~End Ifも、ひとつのまとまりですよね。その中(5行目)の頭もインデントしてみましょう。
Sub Test() Dim i As Integer i = InputBox("数値を入力して下さい。") If i <= 10 Then MsgBox "変数iは10以内です。" End If End Sub
だいぶ分かりやすくなりました。
行間をあけてみる
ここは絶対やらなければならないところではないのですが、個人的に、「まとまり」をきちんと分離させると、あとで見たときに分かりやすいと思っています。ただ、やりすぎるとコードが長くなりすぎてしまうので注意です。
Sub Test() Dim i As Integer i = InputBox("数値を入力して下さい。") If i <= 10 Then MsgBox "変数iは10以内です。" End If End Sub
こんな感じにしてみました。宣言、入力、条件分岐と3に分けてあります。最初のものに比べると、このプログラムがどんな動きをするのか分かりやすくなっていませんか?
コメントアウト
コメントアウトは、プログラムの動きには反映されない、作成者側のメモみたいなものです。VBAの場合は頭に['](シングルクォーテーション)をつけると、その行に関してそれ以降は反映されないという仕組みになっています。
Sub Test() '「Test」というタイトル Dim i As Integer 'iを整数で宣言 i = InputBox("数値を入力して下さい。") '入力してもらう If i <= 10 Then 'iが10以下だったら MsgBox "変数iは10以内です。" 'メッセージを出す End If 'If終わり End Sub 'Sub終わり
こんな風にメモを残しておくと、非常に分かりやすくなります! 今回は例として全行に入れましたが、入れすぎはごちゃごちゃしてしまうので、適宜で良いと思います。
プログラミングをチームで行う場合、自分の作ったものを後任の方に託す場合などのためにコメントを残しておくことは重要ですが、実は自分の書いたものでも数ヶ月経つと「…?」ってなること、あるんですよねw そういう時のためにも、コメントは是非残しておきましょう。
普段見えないソースコードが密かに楽しい
整理整頓されたソースコードは、読みやすい上になんだか知的な感じまで醸し出します。まるでとても綺麗な字で書かれた手紙のようにも見え、きっとこれを書いた人、素敵な人なんだろうな…!なんて妄想まで広がります。(私は)
ちなみに、こちらの記事ではプログラマの苦悩というか感情が感じられるコメントを集めてあって面白かったです。
ほかの入門記事はこちら
- ExcelVBA入門第0回 始める前に
- ExcelVBA入門第1回 動かしてみる
- ExcelVBA入門第2回 とりあえず覚えておくべきこと
- ExcelVBA入門第3回 変数の宣言
- ExcelVBA入門第4回 RangeとCells
- ExcelVBA入門第5回 ステップ実行
- ExcelVBA入門第6回 If ~ End Ifステートメント
- ExcelVBA入門第7回 インデントとコメントアウト
- ExcelVBA入門第8回 繰り返し処理
- ExcelVBA入門第9回 5種類のモジュールの違い
- ExcelVBA入門第10回 3種類のプロシージャと命名規則
- ExcelVBA入門第11回 スコープ(適用範囲)
- これからExcelのマクロを始めたいという方に!簡単な練習問題作りました。
- 私がExcelVBAでよく使う便利なコード・スニペットまとめ
- プログラム初心者さんへ贈る、エラーが起きたら試してみて欲しいこと
- ExcelVBAのクラスモジュールって何?という人向けの使い方まとめ
書籍を執筆しています。
コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)
YouTubeでQ&Aコンテンツを企画しています
運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。