每次打开表单时都会调用以下代码。它在第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
答案 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)
我的下一个问题是你的总体目标是什么?以编程方式在设计视图中操作控件是不常见的。