You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 12:13:09