Visual Basicのプロシージャは、戻り値を返さないSubプロシージャと戻り値を返すFunctionプロシージャの2種類に分類されます。
Subプロシージャの宣言
[scope] Sub procedurename[([passby] parameter [As datatype] [= defaultvalue] [, [passby] parameter [As datatype] [= defaultvalue]...])]
// プロシージャの処理
End Sub
Functionプロシージャの宣言
[scope] Function procedurename[([passby] parameter [As datatype] [= defaultvalue] [, [passby] parameter [As datatype] [= defaultvalue]...])] [As returntype]
// プロシージャの処理
// 戻り値の設定
procedurename = value
End Function
スコープ | 説明 |
---|---|
Private | このモジュールからのみ呼び出せる |
Public | プロジェクトのどこからでも呼び出せる |
引数を渡す方法 | 説明 |
---|---|
ByRef | 参照渡し |
ByVal | 値渡し |
passbyの指定を省略した場合、Visual Basicのバージョンによりデフォルト値が異なる。
バージョン | デフォルトの引数渡し方法 |
---|---|
Visual Basic 6.0 | 参照渡し |
VB.NET | 値渡し |
プロシージャの最後(End Sub
又はEnd Function
ステートメント)に達するとプロシージャでの処理を終えて、プロシージャの呼び出し元に処理が戻る。また、プロシージャの最後に達しなくても、Exit Sub
又はExit Function
ステートメントで強制的にプロシージャでの処理を終えて呼び出し元に戻すこともできる。
Subプロシージャの呼び出し方には、さまざまな方法がある。
procedure [argument [,argument...]]
procedure parameter:=argument [,parameter:=argument...]
Call procedure([argument [,argument...]])
Call procedure(parameter:=argument [,parameter:=argument...])
Sub MySub1()
MySub2 "引数1", "引数2"
Call MySub2("引数1", "引数2")
MySub2 var2:="引数2", var1="引数1"
Call MySub2(var2:="引数2", var1="引数1")
End Sub
Sub MySub2(var1 As String, var2 As String)
MsgBox var1 & ":" & var2
End Sub
Functionプロシージャは、呼び出し側に値を戻すことができます。戻り値を設定するには、プロシージャ名と同じ名前の変数に値を代入します。
procedure([argument [,argument...]])
procedure(parameter:=argument [,parameter:=argument...])
Function AddFunc (a As Integer, b As Integer)
AddFunc = a + b
End Function
呼び出し側では、Functionプロシージャの戻り値を参照することができます。
ans = AddFunc(2, 3)