将数组作为参数传递给VBA函数

时间:2014-07-07 09:13:41

标签: arrays excel excel-vba vba

我有一个用户定义的Excell工作表函数(线性),它从一个X数组和一个Y值数组中插入一个定义的X1值,工作正常。我试图在另一个函数(下面的示例代码中的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 个答案:

答案 0 :(得分: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

这适用于任何一维数组。