引数として配列を受け入れる関数を作成しようとしています。配列には、任意の数の要素を含めることができます。
Function processArr(Arr() As Variant) As String
Dim N As Variant
dim finalStr as string
For N = LBound(Arr) To UBound(Arr)
finalStr = finalStr & Arr(N)
Next N
processArr = finalStr
End Function
関数を呼び出す方法は次のとおりです。
Sub test()
Dim fString as string
fString = processArr(Array("foo", "bar"))
End Sub
次のエラーが表示されます:
コンパイルエラー:型の不一致:配列またはユーザー定義型が必要です。
何が間違っていますか?
これは不要に思えますが、VBAは奇妙な場所です。配列変数を宣言し、Array()
を使用して変数を設定し、変数を関数に渡すと、VBAは満足します。
_Sub test()
Dim fString As String
Dim arr() As Variant
arr = Array("foo", "bar")
fString = processArr(arr)
End Sub
_
また、関数processArr()
は次のように書くこともできます。
_Function processArr(arr() As Variant) As String
processArr = Replace(Join(arr()), " ", "")
End Function
_
あなたは全体の簡潔さの事にいる場合。
これに宣言を変更した後、あなたの関数は私のために働いた...
Function processArr(Arr As Variant) As String
このようなParamArray
を考慮することもできます...
Function processArr(ParamArray Arr() As Variant) As String
'Dim N As Variant
Dim N As Long
Dim finalStr As String
For N = LBound(Arr) To UBound(Arr)
finalStr = finalStr & Arr(N)
Next N
processArr = finalStr
End Function
そして、このような関数を呼び出して...
processArr("foo", "bar")