vba - 在 VBA-ACCESS 中声明 Array() 在没有上限的情况下不起作用
问题描述
我正在学习声明arrays
. 当我通过使用以下代码给出上限来声明它时,它会起作用:
Dim arrayA(5) as String
我通过分配一个随机值来检查它:
arrayA(0) = 1
MsgBox arrayA(0)
MsgBox 通过给出值 1 来响应。
但是,我的实际意图是创建一个动态数组,我定义如下:
Dim arrayA() as String
我以同样的方式测试它
arrayA(0) = 1
MsgBox arrayA(0)
但这一次它不起作用并MsgBox
弹出空。有人会告诉我是否需要加载一些库来使用dynamic array
吗?
解决方案
VBA 中的数组需要在使用前进行初始化。
Redim
您可以使用以下语句初始化数组:
Dim arrayA() as String
Dim i As Integer
i = 0
Redim ArrayA (0 To i)
arrayA(0) = "1" 'String
MsgBox arrayA(0)
或者,有些函数会返回一个初始化的数组。在这种情况下,Redim
不需要,因为初始化发生在外部函数中。但是,您确实需要确保将类型与返回的数组匹配,并且开销相同或更多。
Dim arrayA() as Variant
arrayA = Array(1)
MsgBox arrayA(0)
推荐阅读
- c# - 如何通过 ViewModel 从 select2 中返回多个 ID 列表到我的控制器
- deployment - Kubernetes 部署的不同方式?
- javascript - Firebase 实时云功能 - 无法读取空快照的属性
- visual-studio-2015 - 我不能在 VS2019 中使用“fscanf”
- java - JUnit SpringBootTest 构造后和关闭
- django - 函数基础视图中的 django slug
- python - 按次数生成多项式特征
- c# - 在 ASP.Net Core 2.2 中使用 AJAX 提交表单
- vue.js - 轻松将脚本标签添加到 nuxtjs
- sql - CREATE TABLE 上的“缺少右括号”错误