J'essaie d'écrire une fonction qui accepte un tableau comme argument. Le tableau peut avoir n'importe quel nombre d'éléments.
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
Voici comment j'essaie d'appeler la fonction:
Sub test()
Dim fString as string
fString = processArr(Array("foo", "bar"))
End Sub
Je reçois une erreur en disant:
Erreur de compilation: incompatibilité de type: type de tableau ou défini par l'utilisateur attendu.
Qu'est-ce que je fais mal?
Cela semble inutile, mais VBA est un endroit étrange. Si vous déclarez une variable de tableau, définissez-la à l'aide de Array()
, puis transmettez-la à votre fonction. VBA sera heureux.
Sub test()
Dim fString As String
Dim arr() As Variant
arr = Array("foo", "bar")
fString = processArr(arr)
End Sub
De plus, votre fonction processArr()
pourrait être écrite ainsi:
Function processArr(arr() As Variant) As String
processArr = Replace(Join(arr()), " ", "")
End Function
Si vous aimez la brièveté.
Votre fonction a fonctionné pour moi après avoir changé sa déclaration en ceci ...
Function processArr(Arr As Variant) As String
Vous pouvez également envisager un ParamArray
comme celui-ci ...
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
Et puis appelez la fonction comme ça ...
processArr("foo", "bar")