Childe jun 2023-11-05 00:42 采纳率: 88.9%
浏览 14
已结题

Excelvba关于窗体实例化

简单描述一下,vba中我建立了一个窗体叫A,我在模块中写了一个过程

Sub test()

Dim myform as userform

Set myform=A

A.show

End sub

然后执行到show的时候就会报错,请指点一下如何实例化A.show能执行

  • 写回答

4条回答 默认 最新

  • 社区专家-Monster-XH 2023-11-05 00:44
    关注

    基于Monster 组和AIGC的调写:若有帮助,还望采纳~~

    • 在VBA中实例化一个用户窗体并显示它的正确方式稍有不同。你不能直接将窗体赋值给一个 UserForm 类型的变量。相反,你需要创建一个窗体的新实例,然后显示这个实例。

    假设你的用户窗体名为 UserForm1,以下是在VBA中实例化并显示该窗体的代码:

    Sub test()
    
        Dim myForm As UserForm1
    
        ' 创建UserForm1的一个新实例
        Set myForm = New UserForm1
    
        ' 显示表单
        myForm.Show
    
    End Sub
    

    如果你确实命名你的窗体为 A,那么你应该这样做:

    Sub test()
    
        Dim myForm As A
    
        ' 创建A的一个新实例
        Set myForm = New A
    
        ' 显示表单
        myForm.Show
    
    End Sub
    

    请注意,要让 New 关键字工作,你需要在VBA编辑器中的 "工具" > "引用" 中勾选 "Microsoft Forms 2.0 Object Library"(或类似名称的库),但通常情况下,如果你已经在VBA项目中创建了UserForm,那么这个库应该已经默认引用了。

    同时,请确保你的窗体名正确无误,并且没有将窗体模块的名字和窗体实例的名字搞混。在VBA中,窗体有两个名称:一个是窗体的名字,另一个是窗体代码模块的名字。这两者可以不同。通常,你实例化的应该是窗体的名字,不是代码模块的名字。

    如果出现错误,检查窗体名称是否正确,并且没有其他语法或运行时错误。此外,确保你没有在VBA中重复使用窗体的名称,因为这可能会导致冲突。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 11月13日
  • 已采纳回答 11月5日
  • 创建了问题 11月5日