プロシージャ - Sub 、 Function -

Excel VBAのSubプロシージャ、関数を利用する機会があったのでメモしておきます。

Subプロシージャと関数の大きな違いは「関数は戻り値を返すことができる」ということらしいです。

1.Subプロシージャ

Subプロシージャの定義

Sub サブプロシージャ名(引数 As 引数型)
   処理
End Sub

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

Sub main()
   Call サブプロシージャ(引数)
End Sub

2.関数

関数の定義

Public Function 関数名(引数 As 引数型) As 戻り値型
   処理
   関数名 = 戻り値
End Function

※return文は利用せず、「関数名 = 戻り値」で戻り値をセットします。

関数の呼び出し

Sub main()
   result = 関数名(引数)
End Sub


戻り値にオブジェクトを利用する際には、Set文にて値をセットする必要があります。
戻り値がオブジェクトの場合の関数の定義

Public Function 関数名(引数 As 引数型) As 戻り値型
   処理
   Set 関数名 = 戻り値
End Function

戻り値がオブジェクトの場合の関数の呼び出し

Sub main()
   Set result = 関数名(引数)
End Sub

※関数のPublic、Privateに関して
Public … 外部モジュールからの呼び出しが可能
Private … 同一モジュール内でのみ呼び出しが可能