VBA SubとFunctionプロシージャのサンプル

VBAのSubとFunctionプロシージャのサンプルです。Excel、Accessとも同じです。

目次

サンプル 戻り値なし (Subプロシージャ)
  戻り値あり (Functionプロシージャ)

戻り値なし (Subプロシージャ)

Sub プロシージャ名([引数])
End Sub

Subプロシージャは戻り値がない場合に使用します。

Sub test1()

    Call WriteLog

End Sub
Sub WriteLog()

    Debug.Print ("test") ' test

End Sub

3行目は、6行目のSubプロシージャを実行します。
3行目の呼出は引数がない場合はかっこ()はありません。

Subで引数あり

Subプロシージャの呼出で引数があるサンプルです。

Sub test1()
    
    Call chkNumber(1, 2)
    
End Sub
Sub chkNumber(num1, num2)

    If num1 = 1 And num2 = 2 Then
        Debug.Print ("OK") 'OKが出力される
        Exit Sub 'Subを抜ける
    End If

    Debug.Print ("NG") '出力されない

End Sub

3行目は、引数で2つの値を渡しています。
Subプロシージャを途中で終了する場合は10行目のようにExit Subを指定します。

戻り値あり (Functionプロシージャ)

Function プロシージャ名([引数]) as 戻り値のデータ型
  プロシージャ名 = 戻り値
End Function

Functionは戻り値があるときに使用します。

Sub test1()
    
    If chkNumber(5) = False Then
        MsgBox "エラーです" 'ダイアログが表示される
    End If

End Sub
Function chkNumber(num1) As Boolean

    If Not (num1 = 2) Then
        chkNumber = False '値をセット
        Exit Function 'Functionを抜ける
    End If

    chkNumber = True '値をセット
End Function

3行目のchkNumberは、8行目のFunctionプロシージャを実行します。
8行目のBooleanは、戻り値のデータ型です。
値を返す場合は、11行目または15行目のようにプロシージャ名に値をセットします。
Functionを途中で終了する場合は12行目のようにExit Functionを指定します。

関連の記事

VBA IF文の使い方(条件分岐)

△上に戻る