Excel UDF数组公式返回0

时间:2017-09-03 10:10:11

标签: arrays excel vba excel-vba

我有一个数组公式如下:

Public Function fafsa(inputRange As range, desks As range) As Integer

    Dim vArr() As Integer
    Dim i As Long

    ReDim vArr(1 To inputRange.Cells.Count, 1 To 1)

    i = 1   
    For i = 1 To inputRange.Cells.Count
        vArr(i, 1) = 1
    Next
    fasfa = vArr

End Function

当从excel调用它时,作为数组公式(Ctrl + Shift + Enter)它只显示0,而当我在监视窗口中查看数组时,它会填充1s。任何人都知道可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

  • 正如@luuklag所指出,你有一个简单的错字。

出于某种原因,VBA默认为 NOT 需要变量声明。您应该通过导航到“选项”窗口的“常规”选项卡(工具 - >选项)并设置该选项来更改此设置。这会将Option Explicit放在每个模块的开头,您可以检查HELP的重要性。

enter image description here

  • 一旦这样做,您将收到类型不匹配错误。这是因为,除非您的输出类型是Variant,否则您需要将输出专门声明为数组。所以你的第一行应该是:
Public Function fafsa(inputRange As Range, desks As Range) As Integer()

Public Function fafsa(inputRange As Range, desks As Range) As Variant

Public Function fafsa(inputRange As Range, desks As Range)