我有一个动态添加复选框的Excel用户表单。
我添加带有如下代码的复选框:
Set chkBox = Me.Controls.Add("Forms.Checkbox.1", "Checkbox" & i)
我想删除所有这些复选框。
Dim j As Integer
'Remove all dynamically updated checkboxes
For Each cont In Me.Controls
For j = 1 To NumControls
If cont.Name = "Checkbox" & j Then
Me.Controls.Remove ("Checkbox" & j)
End If
Next j
Next cont
我收到以下错误消息:
6条答案
按热度按时间ie3xauqp1#
更好的方法可能是跟踪您创建的控件(例如在集合中),并使用它来删除它们。
这样,您的代码就不会绑定到名称格式,并且也可以应用于其他控件类型。
roqulrg32#
假设没有其他以“Checkbox”开头的控件名称,
ebdffaop3#
如果你已经知道了控件的名称、类型和数量,为什么要使用双循环呢?
注意,只有在运行时创建的控件才能被删除。
对于您的案例:'如果所有命名都正确
另一种方法你可以尝试
tf7tbtn24#
为控件添加一个检查似乎解决了这个问题。不知道为什么,但它确实有效。
nlejzf6q5#
我使用命令按钮重写了原始代码,只添加了“Me.Controls.Count”而不是“NumControls”,并将“Cont”定义为控件。它似乎对我有效。请让我知道这是否适合你:
-->
lyr7nygr6#
选择保留哪些控件和删除哪些控件的另一种方法是使用.Tag属性。这允许在添加控件时对其进行一些精细控制,例如通过使用.Tag作为位字段。
创建时:
到了整理的时候: