VBAでマクロを組もうと思っても、いざ書き始めると「どう書いたらいいか分からない」「最初の一行すら浮かばない」と手が止まってしまうことがあります。
これは初めての方に限らず、経験者でもよくある悩みです。そんなときにおすすめしたいのが、「処理をまず日本語で書き出してみる」という方法です。
プログラムの基本は「命令の組み合わせ」です。その命令は、実は普段自分が頭の中で考えている日本語と近い構造をしています。
日本語で処理を書くとは?
たとえば、こんな処理をしたいとします。
A列の中から「未処理」と書かれているセルを探し、B列に「対応中」と書きたい。
この一文が、そのまま「マクロの設計図」になります。
次のように、段階的に分解して考えるとコードに変換しやすくなります。
- A列を上から順番に見る
- 「未処理」と書かれているセルを探す
- その行のB列に「対応中」と書く
これをそのままVBAに落とし込むと、次のようなコードになります。
Sub WriteStatus()
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1).Value = "未処理" Then
Cells(i, 2).Value = "対応中"
End If
Next i
End Sub
For i = 2 To ...でA列を上から順にチェックしています。Ifで「未処理かどうか」を判断しています。- 条件に合致したら、隣のB列に「対応中」を入力しています。
書き出すメリット
この「日本語で処理を書き出す」方法には、次のようなメリットがあります。
- 手が止まらない:悩む時間が減り、自然と処理の順序を考えられる
- 書く前にロジックを整理できる:構造の矛盾に気づける
- 複雑な処理も段階的に作れる:一気に書こうとせず、分割して考える習慣がつく
具体的な手順
- まずは「やりたいこと」を一文で書く
- それを「作業の流れ」に分解する(3〜5ステップ)
- 1ステップずつ、VBAコードに書き起こす
応用:コメントで設計図を書く
実際のコードに取りかかるときにも、「コメント」を使って処理を書き出すことで、コードがよりわかりやすくなります。
Sub UpdateSheet()
Dim i As Long
' データの最終行を取得する
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
' A列をループしてチェックする
If Cells(i, 1).Value = "エラー" Then
' 「エラー」と書かれていたら赤色に塗る
Cells(i, 1).Interior.Color = RGB(255, 0, 0)
End If
Next i
End Sub
このように「やることを日本語で書いて→VBAで書く」をセットにすると、途中で迷子になりにくくなります。
まとめ:VBAは日本語の延長線
VBAをいきなり書こうとすると、「正しい構文」「記号のルール」などに目が行きがちです。
でも、まずは「やりたいこと」を日本語で書き出すだけで、
- 論理の流れを整理できる
- 書く手順が明確になる
- ミスの発見がしやすくなる
という大きな効果があります。
「何から書けばいいか分からない…」と感じたら、まずは紙とペン、あるいはコメント欄に“日本語で処理を書く”ところから始めてみてください。
それが、迷いを減らし、正しいコードを書く第一歩になります。
