|
配列を戻り値とする関数として、以下のようなコードを考えています。
TestFunc1のように、戻り値用の変数(ret)を使って記載すれば問題ないですが、
TestFunc2のように、直接戻り値(TestFunc2)を使って記載するとエラーになります。
どうもTestFunc2(0)が、関数呼び出しとして解釈されているようですが、
この問題を回避する方法をご存じの方がいらっしゃればご教示いただきたく。
なお、大規模な配列を想定しており、戻り値用のテンポラリ変数を使用してしまうと、
要素がコピーされることを回避したいと考えたことが発端です。
Sub Test()
Dim a As Variant, b As Variant
a = Array(1)
b = TestFunc1(a)
Debug.Print b(0)
b = TestFunc2(a)
Debug.Print b(0)
End Sub
Function TestFunc1(a As Variant) As Variant
Dim ret As Variant
ret = a
ret(0) = 10
TestFunc1 = ret
End Function
Function TestFunc2(a As Variant) As Variant
TestFunc2 = a
TestFunc2(0) = 10
End Function
|
|