Sub TEST1()
'値を渡して、値を取得
Dim A
A = TEST2(1)
MsgBox A
End Sub
Function TEST2(B)
'引数に1を足す
TEST2 = B + 1
End Function
「Function」は、引数を渡して、計算した結果を「戻り値」として取得することができます。
引数を渡して戻り値を取得できる
実行してみます。
引数を渡して戻り値を取得できた
引数を渡して計算した結果を戻り値として取得できました。
こんな感じで、戻り値を取得できるのがポイントです。
戻り値を取得する
次の変数を戻り値として、取得してみます。
配列
オブジェクト
複数の値
では、一つずつやってみます。
配列を取得する
戻り値に「配列」を入力することで、「配列」を取得できます。
Sub TEST1()
Dim A
'配列を取得する
A = TEST2(2)
End Sub
Function TEST2(B)
'配列を作成
Dim C
C = Array(1, 2, 3)
'配列の各値に引数を掛ける
For i = 0 To 2
C(i) = C(i) * B
Next
'配列を戻す
TEST2 = C
End Function
こんな感じで、戻り値に配列を入力して、配列を取得します。
「配列」を戻り値に入力
では、実行してみます。
「配列」を取得できた
配列を取得できました。
オブジェクトを取得する
オブジェクトを「戻り値」として取得するには、「Set」を使います。
Sub TEST1()
Dim A
'オブジェクトを取得する
Set A = TEST2(1)
MsgBox A.Name
End Sub
Function TEST2(B)
'オブジェクトを戻す
Set TEST2 = Worksheets(B)
End Function
Sub TEST1()
Dim A
'複数の値を配列として取得
A = TEST2(1)
Dim E, F
E = A(0) '配列を値にわける
F = A(1) '配列を値にわける
Debug.Print E
Debug.Print F
End Sub
Function TEST2(B)
'複数の値を作成
Dim C, D
C = 1 * B
D = 2 * B
'複数の値を配列にして、戻す
TEST2 = Array(C, D)
End Function
複数の値を「配列」にして戻した後に、複数の配列にわけると、「複数の値」を戻り値として取得できます。
イメージはこんな感じです。
では、実行してみます。
複数の値を取得できました。
Subで「参照渡し」を使う
2つ目は、Subで「参照渡し」を使う、という方法です。
Sub TEST1()
'複数の値の初期値を作成
Dim A, B
A = 0
B = 0
'参照渡しで値を渡す
Call TEST2(1, A, B)
Debug.Print A
Debug.Print B
End Sub
Sub TEST2(C, D, E)
'複数の値を計算して戻す
D = 1 * C
E = 2 * C
End Sub
Subを使って「参照渡し」で複数の変数を渡すことで、「複数の値」を戻り値として取得できます。
イメージは、こんな感じです。
では、実行してみます。
複数の値を取得できました。
複数の値を戻したい場合は、「Sub」で「参照渡し」を使う方法が、シンプルです。
引数を渡す
「Function」に次の変数を渡してみます。
配列
オブジェクト
複数の値
では、それぞれ渡してみます。
配列を渡す
「Function」に「配列」を渡してみます。
Sub TEST1()
Dim A
'配列を渡す
A = TEST2(Array(1, 2, 3))
End Sub
Function TEST2(B)
'配列の各値に2を掛ける
For i = 0 To 2
B(i) = B(i) * 2
Next
'配列を戻す
TEST2 = B
End Function
引数に「配列」を入力して渡します。
「配列」を渡す
では、実行してみます。
「配列」を渡して戻り値を取得できた
「配列」を渡して、戻り値を取得できました。
オブジェクトを渡す
次は、「オブジェクト」を渡してみます。
Sub TEST1()
Dim A
'オブジェクトを渡す(シートオブジェクトを渡す)
A = TEST2(Worksheets(1))
MsgBox A
End Sub
Function TEST2(B)
'シート名を戻す
TEST2 = B.Name
End Function
引数に「オブジェクト」を入力して、渡してみます。
「オブジェクト」を渡す
では、実行してみます。
「オブジェクト」を渡して戻り値を取得
「シートオブジェクト」を渡して、戻り値を取得できました。
複数の値を渡す
Functionに、「複数の値」を渡してみます。
Sub TEST1()
Dim A
'複数の引数を渡す
A = TEST2(1, 2, 3)
MsgBox A
End Sub
Function TEST2(B, C, D)
'複数の引数を使って、足し算の結果を戻す
TEST2 = B + C + D
End Function
引数に「複数の値」を入力すれば、複数の引数を渡せます。
「複数の値」を渡す
では、実行してみます。
「複数の値」を渡して戻り値を取得
「複数の値」を渡して、戻り値を取得できました。
関数として使う
Functionのもう一つのポイントが、「ワークシート関数」として使える、というところです。
ワークシート関数として使う
Functionを「ワークシート関数」として使ってみます。
Function Func_TEST(A)
'1を足す
Func_TEST = A + 1
End Function