Subはサブルーチン、Functionは関数の事です。プログラムの量が多くなったり、再利用できるプログラムは サブルーチンや関数を作り、ソースを見やすく、使いやすくするのが主な役割です。
サブルーチンと関数の呼び出し例
Private Sub CommandButton1_Click() test1 (引数)test2 (引数) End Sub Sub test1(s As String) End Sub Function test2(s As String) End Function
引数とは?
引数とはパラメーターともいわれますが、その関数に与える値です。例えば、年月日を引数として与えれば、曜日が返ってくる関数を作る事もできます。
test1()というサブルーチン、test2()というFunction を作成しました。test1()を実行するとA1のセルに"あいうえお"、test2()を実行するとA2のセルに"かきくけこ"と表示されます。
以下が結果です。これだけでは、SubとFunctionの違いはまったくありません。
FunctionはSubと違い、返り値を返す事ができます。つまりSubと同じことができ、さらに機能が増えていると考えてよいでしょう。以下に test2()の返り値を用いたプログラムの例です。
test2()を呼び出すとき"かきくけこ"と引数で与えられて、test2()関数内で "かきくけこさしすせそ"と加工し、それを返り値として返しています。
返り値の設定方法
返り値を返す時は " 関数名 = 値 " と関数名に設定します(他のプログラム言語では " return 値 " の形式が多いのでちょっと間違えやすいですね。)。このソースでも test2()関数ですので test2 = s2 と返り値を設定しています。
以下が結果です。
今回使用したソースプログラム
Private Sub CommandButton1_Click() test1 ("あいうえお")Range("A2").Value = test2("かきくけこ") End Sub Sub test1(s As String) Range("A1").Value = s End Sub Function test2(s As String) Dim s2 As String s2 = s & "さしすせそ" test2 = s2 End Function