Excel VBA | 「Subプロシージャ」と「Functionプロシージャ」の違い

VBA
スポンサーリンク

初心者向けに 「Subプロシージャ」と「Functionプロシージャ」の違い、そして引数・戻り値の使い方を丁寧に解説します。


SubプロシージャとFunctionプロシージャの違い

項目SubプロシージャFunctionプロシージャ
書き方Sub 名前() ... End SubFunction 名前() ... 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
VB

Function版

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両方で書いてみる」ことです。違いが体感できて理解が深まります。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました