arrays - 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
解决方案
VBA 数组默认从 0 开始。可以通过Option Base 1
在模块顶部使用来覆盖它,但这通常在 VBA 程序员中不受欢迎。相反:只需声明下限:
ReDim TestVector(1 To n, 1 To 1)
然后您的代码将按预期工作。
尽管Option Base 1
可能不是一个好主意,但使用Option Explicit
是一个非常好的主意。它将为您节省大量调试时间。Require Variable Declarations
您可以通过在 VBA 编辑器选项中启用来一劳永逸地做到这一点。
推荐阅读
- python - 如何覆盖 django 文件?
- sql-server - 适用于 Azure SQL 和 Pre-SQL 2016 的时区
- linux - 如何在 Linux 上读取 USB 设备的二进制设备对象存储 (BOS) 描述符
- prediction - 为集成机器学习模型堆栈推导预测效率和预测误差
- java - java泛型类的棘手扩展
- python - Calculate word embeddings using fasttext
- python - Python output file in xlsx format
- python - 为什么条件语句没有执行?
- ruby-on-rails - 类“Minitest::Result”的未定义方法“test_get_index”
- admob - Admob 原生广告停止显示错误代码为 3 的广告