代码之家  ›  专栏  ›  技术社区  ›  cpage

函数没有正确返回数组,尽管可以在Debug.Print中看到

  •  0
  • cpage  · 技术社区  · 7 年前

    我正在编写一个excelvba函数,它返回一个数组以在其他函数中使用。当我测试函数的时候 GenerateBlendedReturnSeries 在我的Excel表中使用 ctlr-shift-enter 要查看完整结果,整个数组都是零。奇怪的是,当我检查 Debug.Print (BlendedReturnSeriesArray(300, 1)) "" 行中的乘法/加法 for loop

    Function GenerateBlendedReturnSeries(AccountID1 As String, Account1Proportion As Double, _
         Optional ByVal AccountID2 As String, Optional ByVal Account2Proportion As Double, _
         Optional ByVal AccountID3 As String, Optional ByVal Account3Proportion As Double) As Variant 'Vs. As Double()
    
    ' CODE IN BETWEEN
    
    Dim BlendedReturnSeriesArray As Variant
        ReDim BlendedReturnSeriesArray(ArraySize, 1)
    
        Debug.Print (ArraySize)
    
        On Error Resume Next
        For i = 0 To UBound(BlendedReturnSeriesArray)
    
            BlendedReturnSeriesArray(i, 1) = _
              Account1PeriodReturnSeriesArray(i, 1) * Account1Proportion _
            + Account2PeriodReturnSeriesArray(i, 1) * Account2Proportion _
            + Account3PeriodReturnSeriesArray(i, 1) * Account3Proportion
            'Debug.Print (BlendedReturnSeriesArray(i, 1))
            'Debug.Print (i)
    
        Next i
    
        On Error GoTo 0
    
        Debug.Print (BlendedReturnSeriesArray(300, 1))
    
        GenerateBlendedReturnSeries = BlendedReturnSeriesArray 'BlendedReturnSeriesArray
    
    End Function
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Tim Williams    7 年前

    除非你这么做

    ReDim BlendedReturnSeriesArray(1 To ArraySize, 1 To 1)
    

    或者你正在使用 Option Base 1

    推荐文章