簡體   English   中英

將數組作為參數傳遞給VBA函數

[英]Passing Arrays as a parameter to a VBA function

我有一個用戶定義的Excell工作表函數(線性),該函數以定義的X1值從X數組和Y值數組進行插值,效果很好。 我試圖在另一個函數(在下面的示例代碼中為NPL)中使用此函數,方法是在VBA模塊中將其設置為Private Static函數,然后使用在函數中創建的數據數組調用該函數。 當我在電子表格中使用此代碼時,出現#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

更換您的

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

這適用於任何一維陣列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM