VBA需求:根据名称获取对应的UserForm对象
如何通过字符串名称获取对应的UserForm对象
当然可以实现这样的函数。在VBA中,你可以借助UserForms集合来通过名称查找或创建对应的UserForm实例,以下是具体实现:
Function GetUserFormByName(formName As String) As Object Dim targetForm As Object ' 先尝试获取已加载的表单实例 On Error Resume Next Set targetForm = UserForms(formName) On Error GoTo 0 ' 若表单未加载,则创建新实例 If targetForm Is Nothing Then Set targetForm = UserForms.Add(formName) End If Set GetUserFormByName = targetForm End Function
代码说明:
- 查找已加载表单:
UserForms集合包含所有当前已加载的UserForm实例,先尝试通过名称直接获取,若表单已加载(无论是否显示),就能直接拿到对应对象。 - 创建新实例:如果指定名称的表单未加载,用
UserForms.Add方法创建该表单的新实例,方法会返回创建好的UserForm对象。 - 注意事项:传入的
formName必须和VBA工程中UserForm的名称完全一致(VBA对名称大小写不敏感,但建议严格匹配避免意外)。
使用示例:
Sub TestFormRetrieval() Dim myForm As Object Set myForm = GetUserFormByName("UserForm1") myForm.Show ' 调用Show方法显示表单 End Sub
内容的提问来源于stack exchange,提问作者Mehrdad Ahankhah
相关产品推荐
相关产品推荐

