初心者向けに 「Subプロシージャ」と「Functionプロシージャ」の違い、そして引数・戻り値の使い方を丁寧に解説します。
SubプロシージャとFunctionプロシージャの違い
| 項目 | Subプロシージャ | Functionプロシージャ |
|---|---|---|
| 書き方 | Sub 名前() ... End Sub | Function 名前() ... End Function |
| 戻り値 | なし(値を返さない) | あり(値を返す) |
| 呼び出し方 | Call Sub名 または Sub名 | 変数 = Function名(...) |
| 主な用途 | 画面に表示、セルに書き込みなど「処理を実行する」 | 計算や判定をして「結果を返す」 |
👉 簡単に言うと、
- Sub = 「やるだけ」
- Function = 「やって結果を返す」
引数とは?
- 処理に渡す“材料”のこと。
- 料理でいうと「カレーを作る」レシピに「玉ねぎ」「にんじん」を渡すイメージ。
- プログラムでは「セルの場所」「計算する数」などを渡せます。
Subの例(引数あり)
Sub ShowMessage(msg As String)
Range("A1").Value = msg
End Sub
Sub Test()
ShowMessage "こんにちは"
ShowMessage "おはよう"
End Sub
VB👉 A1に「こんにちは」、次に「おはよう」と表示されます。
(引数 msg に文字を渡している)
戻り値とは?
- 処理の結果を返すもの。
- Functionプロシージャで使います。
- 料理でいうと「材料を渡したら、完成した料理が返ってくる」イメージ。
Functionの例(戻り値あり)
Function AddNumbers(a As Integer, b As Integer) As Integer
AddNumbers = a + b
End Function
Sub Test()
Dim result As Integer
result = AddNumbers(3, 5)
Range("A1").Value = result
End Sub
VB👉 A1に「8」が表示されます。
(AddNumbers が計算結果を戻り値として返している)
SubとFunctionの使い分け
- Sub
- 画面に表示する
- セルに書き込む
- ファイルを開く
→ 「結果を返す必要がない処理」に使う
- Function
- 計算して答えを返す
- 判定して「True/False」を返す
→ 「結果を他で使いたい処理」に使う
練習問題(初心者向け)
「2つの数を足して結果を表示する」プログラムを、SubとFunction両方で書いてみましょう。
Sub版
Sub ShowSum(a As Integer, b As Integer)
Range("A1").Value = a + b
End Sub
Sub Test()
ShowSum 3, 5 ' A1に「8」が表示される
End Sub
VBFunction版
Function GetSum(a As Integer, b As Integer) As Integer
GetSum = a + b
End Function
Sub Test()
Dim result As Integer
result = GetSum(3, 5)
Range("A1").Value = "合計は " & result
End Sub
VB👉 Subは「直接表示」、Functionは「計算して返す→表示は別でやる」という違いが分かります。
まとめ
- 引数 = 材料を渡す
- 戻り値 = 結果を返す
- Sub = 処理だけ(戻り値なし)
- Function = 処理+結果を返す
💡 初心者へのおすすめ練習は「同じ処理をSubとFunction両方で書いてみる」ことです。違いが体感できて理解が深まります。

