For-Next循环不会在Access VBA中停止

时间:2019-07-02 16:28:27

标签: access-vba

这似乎是一个疯狂的基本问题,但是我无法弄清楚自己做错了什么。在Access VBA中工作以遍历数组,但是FOR循环没有停止,并且出现“下标超出范围”错误。

    compStr = "[" & uniqueIDs(0) & "]=" & rs(uniqueIDs(0))
    bnd = UBound(uniqueIDs)
    For i = 1 To bnd
        compStr = compStr & " and [" & uniqueIDs(i) & "]=" & rs(uniqueIDs(i))
    Next i

在此示例中,我使用循环来构建compStr,并且bnd存储数组大小。 uniqueIDs拥有2条记录(0-1),我已经确认bnd和UBound(uniqueIDs)的值= 1。但是,FOR语句一直持续到i = 2为止,当它在第四行执行uniqueIDs(2)时,我当然会出错。我想念什么? (我在下面粘贴了调试窗口的图像)

enter image description here

1 个答案:

答案 0 :(得分:3)

我做了一个测试,但是运行成功,请参见以下实现:

enter image description here

关于数据类型的上述注释:我理解人们为什么在Access中使用Variants:这是因为通常将表值分配给变量,并且只有Variant可以选择NULL。但是,在您的情况下,某些东西将字符串值强制为String而不是Variants-如果我用注释掉的行,它将产生Variant / Variant(0到1),所以我使用了类型化的虚拟数组-我不知道否则如何获取Variant / String(0到1)。
但是,没有错误。您是否使用Debug-> Compile编译了代码?如果没有,您可以重试吗?有时这是必要的,否则某些新添加/删除的代码段将无法执行,并且先前的代码编译版本(由Access存储)将使您一团糟。
如果仍然无法正常运行,我认为您应该像其他人在注释中所要求的那样添加其余代码,以查看变量是如何分配值的,以及您使用的Access版本。