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を指定します。
関連の記事