VBA代码停止工作

时间:2009-12-01 15:48:29

标签: ms-access vba access-vba

每次打开表单时都会调用以下代码。它在第5次打开之前效果很好,然后错过了删除其中一个控件。有谁知道这是为什么?

 For Each cb In Forms(frmName).Controls
     If cb.ControlType = acCheckBox Then
         If Left(cb.Name, 3) = "clr" Then
            DeleteControl frmName, cb.Name
         End If
     ElseIf cb.ControlType = acLabel Then
         If Left(cb.Name, 3) = "clr" Then
            DeleteControl frmName, cb.Name
        End If
     End If
 Next

1 个答案:

答案 0 :(得分:2)

当您从Access中的集合中删除项目时,下一个项目将移动到该项目点。 因此,当从集合中删除项目时,您必须从集合的末尾开始并向后移动。

所以替换

For Each cb In Forms(frmName).Controls

对齐
For counter = Forms(frmName).Controls.Count - 1 To 0 Step -1
set cb = Forms(frmName).Controls.Item(counter)

我的下一个问题是你的总体目标是什么?以编程方式在设计视图中操作控件是不常见的。