/ /配列をVBA関数へのパラメーターとして渡す-配列、Excel、Excel-VBA、VBA

配列をパラメータとしてVBA関数に渡す - arrays、excel、excel-vba、vba

ユーザー定義のExcellワークシート関数があります(線形)Xの配列および定義されたX1値でYの値の配列から補間します。これは正常に機能します。私はこれを別の関数(以下のサンプルコードのNPL)で使用して、VBAモジュール内のプライベートスタティック関数に設定し、関数内で作成されたデータの配列を使用して関数を呼び出すことを試みました。 スプレッドシートでこれを使用すると、#VALUEエラーが発生します。 私が間違っていることは何ですか?

コード例:

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

回答:

回答№1は2

あなたの

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

〜と

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

これはどの1Dアレイでも機能するはずです。