Excel 对象没有';在VBA中执行userform控件时不支持此属性错误

Excel 对象没有';在VBA中执行userform控件时不支持此属性错误,excel,vba,Excel,Vba,我有一个VBA代码,用于查找Userform控件的类型,并向excel工作表中的某些单元格添加注释。这些Useform控件是动态的。我的意思是,文本框、标签等控件是通过使用另一个宏插入的。它很好用。我使用类似这样的格式来添加这些控件::setlabel1i=UserForm2.controls.add(“Forms.Label.1”、“Test”和labelCounter,True)。当我从同一用户窗体上的commandbutton调用下面的sub时。我得到“运行时438错误:对象不支持此属性或

我有一个VBA代码,用于查找Userform控件的类型,并向excel工作表中的某些单元格添加注释。这些Useform控件是动态的。我的意思是,文本框、标签等控件是通过使用另一个宏插入的。它很好用。我使用类似这样的格式来添加这些控件::
setlabel1i=UserForm2.controls.add(“Forms.Label.1”、“Test”和labelCounter,True)
。当我从同一用户窗体上的commandbutton调用下面的sub时。我得到“运行时438错误:对象不支持此属性或方法”

下面的代码已成功运行。然而,当我在这个程序中添加一个手动“文本框”时,它显示了这个错误

Private Sub CommandButton1_Click()
Dim cCont As Control
Dim Commnts As String
Commnts = ""
For Each cCont In Me.Controls
    If TypeName(cCont) = "TextBox" And cCont <> "" Then
        Commnts = cCont
        Sheet1.Range(cCont.ControlTipText).AddComment Commnts
    End If

Next cCont

If Commnts <> "" Then
    Unload UserForm2
    MsgBox ("Comments updated")
    Call Graphic16_Click
Else
    MsgBox ("Nothing to update")
End If
End Sub
Private子命令按钮1\u单击()
作为控制的模糊控制
作为字符串的小逗号
Commnts=“”
对于Me.Controls中的每个cCont
如果TypeName(cCount)=“TextBox”和cCount“”,则
Commnts=cCont
表1.范围(cCont.ControlTipText).添加注释命令
如果结束
下一步
如果逗号为“”,则
卸载UserForm2
MsgBox(“更新评论”)
点击调用图形16
其他的
MsgBox(“无需更新”)
如果结束
端接头
有人能帮我一下吗

cCont“”

我得到“运行时438错误:对象不支持此属性或方法”


@悉达多:是的。控件中已存在图像。是的..是的。。在介绍了这一点之后,我开始讨论这个问题用户3342652 7分钟前

如果您的userform上有一个控件没有defualt属性,则会出现该错误。例如,
图像
控件。此控件没有像
Textbox/Range/CommanButton
etc那样的解除属性

你可以说

Debug.Print Textbox1
Debug.Print Range("A1")
Debug.Print Commandbutton1
但是下面的代码会给出一个错误

Debug.Print Image1 '<~~ This will give error 
例如

解决方案

要处理此问题,请将
IF
分为两部分,如下所示。只有在满足第一个条件时,才会检查第二个
If

If TypeName(cCont) = "TextBox" Then
    If cCont <> "" Then

    End If
End If
如果TypeName(cCont)=“TextBox”,则
如果cCont“”则
如果结束
如果结束

节中的错误::如果TypeName(cCont)=“TextBox”和cCont“”,则无法再现错误,它工作正常。您确定只添加一个TextBox,而不添加任何其他控件,如“Image1”控件吗?@SiddharthRout:是的。控件中已存在图像。是的..是的。。在介绍了这一点之后,我开始讨论这个问题。
If TypeName(cCont) = "TextBox" Then
    If cCont <> "" Then

    End If
End If