【问题标题】:How to pass a dynamcally allocated array into a function in Excel VBA如何将动态分配的数组传递给 Excel VBA 中的函数
【发布时间】:2020-03-17 06:13:21
【问题描述】:

我对Excel VBA很陌生,所以请你理解。在互联网上进行研究并没有解决我的问题。所以我希望将VBA中的数值数组传递给一个函数,即将现金流量输入一个NPV函数,全部在Excel VBA代码中。

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))

总是出错。对如何做到这一点有任何想法吗?

提前谢谢你。最好的问候。

【问题讨论】:

  • 您将Postavke 定义为String 数组。
  • 请注意,默认情况下您的数组将从零开始。

标签: arrays excel vba function pass-by-reference


【解决方案1】:

这样创建函数:

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() 数组是否必须声明为字符串或长整数。我保留了你最初的声明...

然后像这样调用函数:

NSV = NPV(0.06, Postavke())

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

Option Base 1

否则,您必须注意(如@SJR 所说)数组默认从零开始。

【讨论】:

    猜你喜欢
    • 2021-04-17
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    相关资源
    最近更新 更多