首页 > 解决方案 > 在 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吗?

标签: vbams-access

解决方案


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)

推荐阅读