搜索用户表单标题

时间:2014-01-10 22:13:04

标签: excel vba excel-vba

我正在尝试使用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

2 个答案:

答案 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中的代码或作用于表单的特定实例的其他代码进行编程。

这并没有完全回答这个问题,因为这个问题有点不清楚,但也许会让它变得毫无意义?