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返回的数组