我的问题是,我是否必须定义数组的维度,或者数组的大小是否会动态变化?
我有一个包含带有是/否框的子表单的表单。我有一个记录集对象,它将表单数据子集化为选择框的行是。
我遍历记录集并将值附加到字符串。
我宁愿遍历记录集并将值放入数组中,除非我不知道用户将选择多少个框,因此我无法预测数组的长度当我定义它时。
我尝试过像
这样的事情dim myArray(0 to variableEqualToLengthOfRecordset) as variant
但它告诉我在声明中我需要一个恒定值。
有没有人知道我是否有办法动态设置数组的长度?
如果我只是将其定义为
dim myArray() as variant
当我尝试添加值时,我遇到了一个越界错误。
答案 0 :(得分:0)
是的,您可以使用ReDim Preserve intArray()重新定义数组,但这非常昂贵并且会降低您的程序速度。我建议只是将数组设置为最大大小,并在不检查框或什么都没有时放入空白,然后只放一个If Array(I)=""然后什么也不做。除非你得到一个大于1,000,000的阵列,否则你会有任何问题。
答案 1 :(得分:0)
有多种方法可以做到这一点,但简而言之,是的,你可以定义数组并动态重新定义它。 要重新定义使用Redim varArray或只是覆盖变量。 下面是我不知道字符串长度时使用的一个小例子
Dim varArray as String
varArray = Split(String, " ") ' Or whatever type it is and its delimiter.
'Then just cycle through the array with a for loop
for Counter = LBount(varArray) to UBound(array)
string = string + varArray(counter)
next counter