/ / Passer des tableaux en tant que paramètre d'une fonction VBA - tableaux, excel, excel-vba, vba

Passer des tableaux en tant que paramètre d'une fonction VBA - tableaux, excel, excel-vba, vba

J'ai une fonction de feuille de calcul Excell définie par l'utilisateur(Linéaire) qui interpole à partir d'un tableau de X et d'un tableau de valeurs Y à une valeur X1 définie, ce qui fonctionne bien. J'ai essayé de l'utiliser dans une autre fonction (NPL dans l'exemple de code ci-dessous) en lui affectant une fonction statique privée dans un module VBA, puis en appelant la fonction à l'aide de tableaux de données créés dans la fonction. Lorsque j'utilise ceci dans la feuille de calcul, une erreur #VALUE s'affiche. Des idées que je fais mal?

Exemple de code:

Function NPL(Length, Beam)
A = Array(1, 2, 3, 4)
B = Array(2, 4, 6, 8)
C = Linear(A, B, 1.5)
NPL = C


End Function
Private Static Function Linear(X, Y, X1)

N = 0
I = 1
Do
N = I
I = I + 1
Loop Until X(I) < X(I - 1) Or N = X.Count

A = 0
I = 0
Do
I = I + 1
Loop Until X(I) > X1 Or I > N - 1

If X1 < X(N) And X1 > X(1) Then
Linear = Y(I - 1) + (X1 - X(I - 1)) * (Y(I) - Y(I - 1)) / (X(I) - X(I - 1))
ElseIf X1 > X(N) Or X1 = X(N) Then
Linear = Y(N)
Else
Linear = Y(1)
End If

End Function

Réponses:

2 pour la réponse № 1

Remplacez votre

Do
N = I
I = I + 1
Loop Until X(I) < X(I - 1) Or N = X.Count

avec

Do
N = I
I = I + 1
Loop Until X(I) < X(I - 1) Or N = UBound(X) - LBound(X) + 1

Cela devrait fonctionner pour n'importe quel tableau 1D.