この記事で解決する悩み
- If文の中にIf文が入ると、どことどこがペアなのかわからなくなる。
- 「End Ifがない」などのエラー頻発で、プログラミングが嫌になりかけている。
- 他人のコード(または過去の自分のコード)が読み解けない。
こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!
今日は、プログラミングやExcel VBAを学び始めたばかりのあなたが、きっと一度は抱える悩み。「If文、ごちゃごちゃしすぎて訳がわからない問題」についてお話しします。
「自分には向いてないのかな…」なんて落ち込む必要は全くありません。それは単に「整理整頓のルール」を知らなかっただけなんです。
書類をファイリングするように、コードも「見た目」を整えるだけで、驚くほどミスが減ります。
今回は、そのためのテクニック、「インデント」について解説します。
インデントって何?
インデントとは、行の先頭に空白を入れて、文字の開始位置を右にずらすこと(字下げ)です。
これをやる理由はたった一つ。「誰の仲間か」をひと目でわかるようにするためです。
特に条件分岐(If文)の中にさらにIf文が入る「ネスト(入れ子)」構造の時、このインデントがないと、ベテランでも解読に苦しみます。
魔法の「階段ルール」
ルールは簡単です。「Ifで始まったら、一段(スペース2つ〜4つ分)下がる。終わったら元に戻る」。これだけです。
これだけで、コードが綺麗な「階段」のようになり、構造がクリアになります。
【悪い例】インデントがないコード
まずは、ダメな例を見てみましょう。全部左に寄っていて、どこで区切れているか分かりにくいですよね。これだと、修正するときに間違いなくミスをします。
' VBAの例:読みにくい...
Sub CheckSalesBad()
Dim Sales As Long
Sales = 10000
If Sales >= 5000 Then
If Sales >= 10000 Then
MsgBox "素晴らしい成績です!"
Else
MsgBox "目標達成です!"
End If
Else
MsgBox "もう少し頑張りましょう"
End If
End Sub
【良い例】インデントがあるコード
次に、同じコードにインデントをつけてみましょう。
' VBAの例:スッキリ!
Sub CheckSalesGood()
Dim Sales As Long
Sales = 10000
' 1つ目の条件:5000以上か?
If Sales >= 5000 Then
' 2つ目の条件(入れ子):さらに10000以上か?
If Sales >= 10000 Then
MsgBox "素晴らしい成績です!" ' ここが一番深い階層
Else
MsgBox "目標達成です!"
End If
Else
MsgBox "もう少し頑張りましょう"
End If
End Sub
いかがですか?
If と End If の縦のラインが揃っているので、どこからどこまでが一つのブロックなのか一目瞭然です。
Pythonも学ぶ人へ:インデントは「義務」
もしあなたがPythonも勉強しているなら、インデントは「見やすさ」のためだけでなく、動かすための絶対ルールになります。
Pythonの公式スタイルガイド(PEP 8)では、「インデントにはスペース4つを使用すること」が推奨されています。
Pythonではインデントがズレているだけでエラーになり、プログラムが動きません。
最初は苦戦するかもしれませんが、これは「誰が書いても読みやすいコードになる」というメリットもあります。
まとめ:美しいコードは、心も守る
- ルール: Ifの中身は必ず字下げ(スペースまたはTab)をする。
- メリット: エラー箇所がすぐわかる。後で見返しても意味がわかる。
最初は面倒に感じるかもしれませんが、これを習慣にするだけで、コードを読む時間もエラーを探す時間も3割ほど減ります(私の体感値です)。
綺麗に整ったコードが書けると、「私、エンジニアっぽい!」と自己肯定感も上がります。まずは形から入るのも、立派な上達の近道だと私は思います。
せっかく勉強するなら楽しんで進めていきましょう!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント