如何将动态分配的数组传递到Excel VBA中的函数

我对Excel VBA非常满意,所以请您谅解。在互联网上进行研究并没有解决我的问题。因此,我希望将VBA中的一组数字值传递给函数,也就是将现金流全部输入到Excel VBA代码中的NPV函数中。

Dim Postavke() As String,velikost As Integer,i As Integer

velikost = WorksheetFunction.CountA(Worksheets("List1").Columns(11))

ReDim Postavke(velikost)

For i = 1 To velikost
    Postavke(i) = Cells(i + 1,11).Value
Next i

现在,我要将Postavke()数组传递给NPV函数:

Dim NSV As Long

NSV = NPV(0.06,ByRef Postavke() As Long))

总是出错。有什么想法可以做到吗?

先谢谢您。最好的问候。

caoxingxiecan 回答:如何将动态分配的数组传递到Excel VBA中的函数

以这种方式创建函数:

Function NPV(whatever As Double,Postavke() As String) As Long
    Dim x As Long
    'do whatever you want with your code,work on the 'x' variable and finally ends with:
    NPV = x
    'or define NPV earier and use Exit Function after..
End Function

您必须决定是否必须将Postavke()数组声明为字符串或long。我保留了您的初始声明...

并调用如下函数:

NSV = NPV(0.06,Postavke())

为了正确加载velikost,从1开始,您必须在模块代码之上添加:

Option Base 1

否则,您必须小心(如@SJR所示),默认情况下该数组是从零开始的。

本文链接:https://www.f2er.com/3058983.html

大家都在问