EXCEL VBA - Sub と Function

プロシージャとは

VBA では、プログラムをプロシージャと呼ばれる単位で実行されます。プロシージャには Sub および Function があります。それぞれのプロシージャには識別するためのプロシージャ名を記述する必要があります。

プロシージャ名はアルファベット、ひらがな、漢字などの文字が使えます。数字も使えますが、プロシージャ名の先頭には文字を使わなければなりません。またアンダーバーも使えますが、その他の記号やスペースなどは使えません。

Sub プロシージャ

Sub プロシージャは、Sub プロシージャ名() で始まり、End Sub で終わります。

Sub Sample()
    ...
End Sub
Sub プロシージャ
Sub プロシージャ
Sub プロシージャ

ひとつのモジュール内にプロシージャは、いくつも定義することができます。

Sub プロシージャ
Sub プロシージャ

プログラムを実行する場合、作成したプロシージャが表示されます。実行したい任意のプロシージャを選択して実行すると、選択されたプロシージャが呼び出されます。

Sub プロシージャ
Sub プロシージャ

Function プロシージャ

Function プロシージャは、Function プロシージャ名() で始まり、End Function で終わります。Sub プロシージャとの違いは、呼び出し元に値を返すことができるという点です。Function プロシージャの構文は以下のとおりです。

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

例えば、受け取った引数を加算して返す Function プロシージャは、以下のとおりになります。

Function add(ByVal a As Integer, ByVal b As Integer) As Integer
    add = a + b
End Function
Function プロシージャ

呼び出し元は、Function プロシージャから返ってくる値を受け取るように記述します。以下の例では、main プロシージャ内から add プロシージャを呼び出しています。add プロシージャで2つの引数の値が加算されて呼び出し元に返しています。返ってきた値は result に格納されます。

Function add(ByVal a As Integer, ByVal b As Integer) As Integer
    add = a + b
End Function

Sub main()
    Dim result As Integer
    result = add(2, 3)
End Sub
Function プロシージャ
Function プロシージャ
Function プロシージャ

関連記事