Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access VBA访问:定义数组_Ms Access_Vba - Fatal编程技术网

Ms access VBA访问:定义数组

Ms access VBA访问:定义数组,ms-access,vba,Ms Access,Vba,我的问题是,我必须定义数组的维度,还是数组的大小可以动态变化 我有一个表单,其中的子表单带有“是/否”框。我有一个记录集对象,它将表单的数据子集为选中框的行是 我循环遍历记录集并将值附加到字符串中 我宁愿遍历记录集并将值放入数组中,除非我不知道用户将选择多少个框,所以在定义数组时无法预测数组的长度 我试过做类似的事情 dim myArray(0 to variableEqualToLengthOfRecordset) as variant 但它告诉我在语句中需要一个常量 有人知道我是否有办法动

我的问题是,我必须定义数组的维度,还是数组的大小可以动态变化

我有一个表单,其中的子表单带有“是/否”框。我有一个记录集对象,它将表单的数据子集为选中框的行是

我循环遍历记录集并将值附加到字符串中

我宁愿遍历记录集并将值放入数组中,除非我不知道用户将选择多少个框,所以在定义数组时无法预测数组的长度

我试过做类似的事情

dim myArray(0 to variableEqualToLengthOfRecordset) as variant
但它告诉我在语句中需要一个常量

有人知道我是否有办法动态设置数组的长度吗

如果我把它定义为

dim myArray() as variant

尝试添加值时出现越界错误。

是的,您可以在阵列中使用ReDim Preserve重新定义阵列,但这非常昂贵,并且会降低程序的速度。我建议将数组设置为最大大小,在不勾选复选框或不勾选任何内容的情况下输入空格,然后输入If ArrayI=then do nothing或其他内容。除非你得到的数组大于1000000,否则我怀疑你会有任何问题

有多种方法可以做到这一点,但简而言之,您可以定义数组,也可以动态地重新定义它。 要重新定义,请使用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

如果将该值附加到字符串中,该字符串中的值之间具有一致的分隔符,如value1;价值2;值3然后可以将字符串拆分为一个数组,该数组的大小将自动正确:varArray=SplitYourStringVariable;如果确实需要显式地对阵列进行尺寸标注,则可以先将尺寸调整为任意大小,然后根据需要重新进行尺寸标注。请参阅Access帮助主题。这是我想到的。如何在您的示例中声明varArray。Dim varArray作为变量?仅Dim varArray作为变量,它将接受从Split返回的数组