Visual Basic プロシージャ

Visual Basicのプロシージャは、戻り値を返さないSubプロシージャと戻り値を返すFunctionプロシージャの2種類に分類されます。

Subプロシージャ

Subプロシージャの宣言

[scope] Sub procedurename[([passby] parameter [As datatype] [= defaultvalue] [, [passby] parameter [As datatype] [= defaultvalue]...])]
  // プロシージャの処理
End Sub

Functionプロシージャ

Functionプロシージャの宣言

[scope] Function procedurename[([passby] parameter [As datatype] [= defaultvalue] [, [passby] parameter [As datatype] [= defaultvalue]...])] [As returntype]
  // プロシージャの処理

  // 戻り値の設定
  procedurename = value
End Function
scope
プロシージャのスコープ
プロシージャのスコープ
スコープ 説明
Private このモジュールからのみ呼び出せる
Public プロジェクトのどこからでも呼び出せる
procedurename
プロシージャの名前を指定する。Functionプロシージャの場合、戻り値を格納する変数の名前にもなる。
passby
引数を渡す方法
引数を渡す方法
引数を渡す方法 説明
ByRef 参照渡し
ByVal 値渡し

passbyの指定を省略した場合、Visual Basicのバージョンによりデフォルト値が異なる。

引数を渡す方法のデフォルト値
バージョン デフォルトの引数渡し方法
Visual Basic 6.0 参照渡し
VB.NET 値渡し
parameter
仮引数の名前
datatype
引数のデータ型
defaultvalue
引数のデフォルト値
returntype
Functionプロシージャの戻り値のデータ型を指定する。returntypeの指定を省略した場合、戻り値のデータ型はVariant型になる。

プロシージャの最後(End Sub又はEnd Functionステートメント)に達するとプロシージャでの処理を終えて、プロシージャの呼び出し元に処理が戻る。また、プロシージャの最後に達しなくても、Exit Sub又はExit Functionステートメントで強制的にプロシージャでの処理を終えて呼び出し元に戻すこともできる。

Subプロシージャの呼び出し

Subプロシージャの呼び出し方には、さまざまな方法がある。

procedure [argument [,argument...]]
procedure parameter:=argument [,parameter:=argument...]
Call procedure([argument [,argument...]])
Call procedure(parameter:=argument [,parameter:=argument...])
procedure
プロシージャ名
argument
引数に渡す値を指定する。parameterを指定しない場合、プロシージャ宣言の引数の順番で指定する。
parameter
引数の名前を指定する。引数の順番は任意で、プロシージャ宣言の引数の順番と一致しなくてもよい。
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プロシージャ

Functionプロシージャは、呼び出し側に値を戻すことができます。戻り値を設定するには、プロシージャ名と同じ名前の変数に値を代入します。

procedure([argument [,argument...]])
procedure(parameter:=argument [,parameter:=argument...])
argument
引数へ渡す値を指定する。
parameter
引数の名前を指定する。
Function AddFunc (a As Integer, b As Integer)
  AddFunc = a + b
End Function

呼び出し側では、Functionプロシージャの戻り値を参照することができます。

ans = AddFunc(2, 3)