分かりやすく、図と例題付きで丁寧に説明します。初心者向けに「Subプロシージャ(マクロ)の考え方」「実際に書いて動かす手順」「よくある使い方・注意点」「練習問題(解答付き)」の順で出します。コードはすぐコピーして試せます。
1. まずイメージ
- Subプロシージャ = 処理の「箱」。
- 箱に名前を付けて(例:
Sub Hello())、中にやってほしいことを書きます。 - 他の箱(Sub)を呼び出すこともでき、呼び出された箱が終わると元の箱に戻ります。
図(処理の流れ)
[Sub A] ── call Sub B ──> [Sub B 実行] ──戻る──> [Sub A 続き]
2. 基本の書き方(すぐ動くサンプル)
Sub Hello()
MsgBox "こんにちは、VBA!"
End Sub
VBSub Hello()で開始、End Subで終わり。MsgBoxはメッセージを出す命令。実行するとポップアップが出ます。
動かし方(Excel)
Alt + F11で VBA エディタを開く。挿入→標準モジュールを選ぶ。- 上のコードを貼り付け、カーソルを
Helloの中に置いてF5または実行→サブ/ユーザーフォームの実行。 - あるいは Excel に戻って
Alt + F8でマクロ一覧からHelloを選んで実行。
3. 例:セルに値を書き込む(手で動く処理)
Sub WriteValues()
Range("A1").Value = "りんご"
Range("A2").Value = 100
Range("A3").Value = Range("A2").Value * 2
End Sub
VB説明:
Range("A1").Value = "りんご"は A1 セルに文字列を入れる。Range("A3").Value = Range("A2").Value * 2は A2 の数値を使って計算し A3 に入れる。
4. Sub を分ける(処理の分割) — 実践例と理由
大きな仕事を小さな仕事に分けると見やすく、再利用できる。
Sub MainProcess()
Range("A1").Value = "開始"
FillSampleData ' 別の Sub を呼び出す(名前をそのまま書く)
CalculateTotal
Range("A10").Value = "終了"
End Sub
Sub FillSampleData()
Range("B1").Value = 10
Range("B2").Value = 20
Range("B3").Value = 30
End Sub
Sub CalculateTotal()
Dim s As Long
s = Range("B1").Value + Range("B2").Value + Range("B3").Value
Range("B5").Value = s
End Sub
VB流れ:MainProcess → FillSampleData(実行)→ 戻る → CalculateTotal(実行)→ 終了
メリット
FillSampleDataは別のマクロでも使い回せる。- それぞれの Sub は短くて理解しやすい。
5. 引数(パラメータ)を使う Sub の紹介(少しだけ発展)
Sub ShowMessage(msg As String)
MsgBox msg
End Sub
Sub TestCall()
ShowMessage "これが呼び出し側から渡したメッセージです"
End Sub
VBShowMessageはmsgというデータを受け取り、それを表示する箱。- 呼び出すときに
ShowMessage "文字列"のように値を渡します。
6. よくある間違い&注意点(初心者向け)
- Subの外にコードを書かない
SubとEnd Subの外に命令を書くとエラーになります。必ずプロシージャ内に書く。
- 名前の重複に注意
- 同じモジュールに同名の Sub があるとエラー。分かりやすく命名(例:
FillSalesData)。
- 同じモジュールに同名の Sub があるとエラー。分かりやすく命名(例:
- セル参照ミス(範囲指定)
Range("A1")の綴りミスや存在しないシート参照は実行時エラー。
- 実行順の理解
- Sub を呼ぶと、その Sub が全部終わってから元の Sub に戻る。途中で戻ってこない点に注意。
- 変数のスコープ
- Sub 内で宣言した変数はその Sub だけ有効(別の Sub からは見えない)。必要なら引数やモジュールレベル変数を使う。
7. デバッグの基本テク
F8:1行ずつ実行(流れを確かめられる)Debug.Print:イミディエイトウィンドウに値を出力(Debug.Print Range("A1").Value)- ブレークポイント(行をクリック)を置くとその行で一時停止する
8. 練習問題(初心者向け・すぐ試せる)— 解答付き
練習1:A列の1〜5行に 1,2,3,4,5 を入れる Sub を作ってください。
解答
Sub FillOneToFive()
Dim i As Integer
For i = 1 To 5
Range("A" & i).Value = i
Next i
End Sub
VB練習2:B1,B2,B3 の値の合計を B5 に出す Sub を作ってください。
解答
Sub SumB123()
Dim s As Long
s = Range("B1").Value + Range("B2").Value + Range("B3").Value
Range("B5").Value = s
End Sub
VB練習3(少し発展):ShowAndWrite(msg As String, r As String) という Sub を作り、引数 msg をメッセージで表示し、r(例:”C1″)のセルに msg を書き込むようにしてください。
解答
Sub ShowAndWrite(msg As String, r As String)
MsgBox msg
Range(r).Value = msg
End Sub
Sub TestShowAndWrite()
ShowAndWrite "こんにちは", "C1"
End Sub
VBまとめ(覚えておきたい点)
- Sub は「処理の箱」。
Sub 名前()〜End Subの形で作る。 - 大きな処理は小さな Sub に分割すると読みやすく再利用しやすい。
- 他の Sub を呼ぶときは名前を書く/引数でデータを渡せる。
- デバッグ(F8、Debug.Print)は必ず活用しよう。

