我已获得以下代码:
Private Sub cboA_change()
'Something to determine number of controls there should be, variable gC
'Something to determine number of controls there are, variable nC
'The first time the code runs, the following code runs:
For i = nC to gC
frmA.Frame1.Controls.Add("txtGroup" & i)
Next
'The second time the code runs, the following is executed:
For i = 7 To nC
Me.Frame1.Controls("txtGroup" & i).Remove 'ERROR HERE
Next
For i = nC to gC
frmA.Frame1.Controls.Add("txtGroup" & i)
Next
End Sub
像这样的东西,代码更大,我试图清理它,所以如果结构看起来不对,那真的不重要。
我调试了Add
语句,我知道在userform中添加了一个名为txtGroup7
的控件。但是,当我稍后尝试删除此控件时,我得到Run-time Error 438: Object Doesn't Support This Property or Method
。我尝试将代码更改为:
Me.Frame1.Controls.Remove ("txtGroup" & i)
但这也不起作用。
有人能指出我正确的方向吗?
修改
我知道帮助说明如下:
"此方法删除在运行时添加的任何控件。然而, 试图删除在设计时添加的控件 导致错误。"
但是由于控件是在运行时添加的(动态地,使用VBA代码),这不应该是一个问题,对吗?
编辑2:
我不知道为什么会这样,但它似乎有效:
q=0
While q < Me.Frame1.Controls.Count
If Me.Frame1.Controls(q).Name = "txtGroup7" Then
Me.Frame1.Controls.Remove q
Else
q = q + 1
End If
Wend
答案 0 :(得分:0)
您的代码中必须有其他错误,因为Remove
应该正常工作。试过:
Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
Me.Frame1.Controls.Add "Forms.TextBox.1", "Text1", True
Else
Me.Frame1.Controls.Remove "Text1"
End If
End Sub
在具有ToggleButton和Frame的UserForm上,并在按下时正确添加和删除TextBox。