我正在学习宣布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)
您可以声明一个没有限制的数组,但必须在使用之前将数组redim
到所需的限制:
Dim myArray() As Long
Redim myArray(0)
myArray(0) = 0 'etc...
所以,你不能像这样在VBA中使用“动态”数组。
我所知道的阵列(以及其他许多VB / A相关信息)的最佳参考来自已故的Chip Pearson:http://www.cpearson.com/Excel/VBAArrays.htm