我正在尝试使用Excel中的标题搜索用户表单。如果用户表单不存在,那么我想显示一个消息框,其中显示消息“userform not found”。但它没有用。
Dim oUserForm As Object
On Error Resume Next
Set oUserForm = UserForms.Add.Caption("Add New")
On Error GoTo 0
If oUserForm Is Nothing Then
MsgBox "The Userform was not found.", vbExclamation, "Error"
Else
End If
答案 0 :(得分:0)
以下是代码。循环Excel文件中的所有表单并按名称搜索表单:
Dim UForm As Object
Dim strFormName As sting
strFormName = "FormName" ' replace this string
IsUserFormLoaded = False
For Each UForm In VBA.UserForms
If UForm.name = strFormName Then
MsgBox "Form exist"
Exit For
End If
Next
答案 1 :(得分:0)
我想也许你会混淆UserForm
和Form Class Module的概念。顺便说一下,这并不奇怪,因为它很混乱。
代码中Add
方法的参数是一个文本字符串,它是UserForm Class
的名称。这是在Project Explorer的Forms部分中出现在VBE中的东西,它不是Form,它是Form的模板,就像Class Module
是自定义对象的模板一样。 / p>
UserForm
是标准Interface
,由VBE Forms文件夹中定义的任何表单继承,并在VBA.UserForms Collection
的所有成员中公开。定义表单时,可以添加其他属性,例如Controls
,例如Name。 UserForm
接口中没有Name属性。另一方面,包含Caption
,因此您可以遍历UserForms集合并检查Caption属性以查看当前是否加载了具有Caption
的表单。任何UserForm类的任何实例的Caption
都将是“UserForm1”,除非由Userform Class
中的代码或作用于表单的特定实例的其他代码进行编程。
这并没有完全回答这个问题,因为这个问题有点不清楚,但也许会让它变得毫无意义?