首页 > 解决方案 > VBA 向量输出返回 0

问题描述

我正在尝试提高我的 VBA 技能,但我被困在了数组上。我在下面有一个非常简单的代码,它在一个向量中输入一些数字,乘以 2 并返回数字。但是细胞都是0?在当地人中,计算是正确的,并且 TestVector 被正确填充,那么问题似乎是什么?

Function test(Vec)
    n = Vec.Rows.Count
    Dim TestVector
    ReDim TestVector(n, 1)

    For i = 1 To n
        A = Vec(i) * 2
        TestVector(i, 1) = A
    Next i

    test = TestVector
End Function

标签: arraysvbavector

解决方案


VBA 数组默认从 0 开始。可以通过Option Base 1在模块顶部使用来覆盖它,但这通常在 VBA 程序员中不受欢迎。相反:只需声明下限:

ReDim TestVector(1 To n, 1 To 1)

然后您的代码将按预期工作。

尽管Option Base 1可能不是一个好主意,但使用Option Explicit是一个非常好的主意。它将为您节省大量调试时间。Require Variable Declarations您可以通过在 VBA 编辑器选项中启用来一劳永逸地做到这一点。


推荐阅读