大家好,我希望你能帮我解决这个问题。 我写了一个简单的函数来将回报转换为价格。它没用,但我会用它来解释我的问题。该功能有效。它做我想要的。
Function ret2prices(ByVal r As Range)
Dim temp() As Variant
temp = r
Dim prices() As Variant
ReDim prices(1 To (UBound(temp, 1) + 1), 1)
prices(1, 1) = 1
For i = 2 To UBound(prices, 1)
prices(i, 1) = 1 + temp(i - 1, 1)
prices(i, 1) = prices(i - 1, 1) * prices(i, 1)
Next i
ret2prices = prices
End Function
问题是,当我在excel工作表中使用它时,它总是返回0。 我希望能够以与CTRL + SHIFT + ENTER使用MMULT相同的方式使用它。有什么建议吗?
非常感谢你的时间
答案 0 :(得分:3)
VBA中的数组是从0开始的,所以:
ReDim prices(1 To (UBound(temp, 1) + 1), 1)
相当于
ReDim prices(1 To (UBound(temp, 1) + 1), 0 To 1)
有问题的代码返回了预期的结果,但是在结果数组的第二列中。将第二维的下限更改为1可以解决问题。