Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 我可以在模块中编写UserForm代码吗?_Excel_Vba_Module_Userform - Fatal编程技术网

Excel 我可以在模块中编写UserForm代码吗?

Excel 我可以在模块中编写UserForm代码吗?,excel,vba,module,userform,Excel,Vba,Module,Userform,有没有一种方法可以在模块中编写我的用户表单代码 我问这个问题的原因是因为我有一个多页面的用户表单,其背后的代码量越来越大。出于组织目的,我希望能够在不同的模块中分隔代码。但我不知道是否可以对userforms执行此操作(除了从userform事件调用子例程) 有没有一种方法可以在模块中编写用户表单代码,而不必从用户表单代码调用子例程?一种方法是定义一个类并将控件动态添加到表单中,然后将这些控件与该类的事件相关联 不过,从您的描述来看,您的用户表单似乎做得太多了。我建议你考虑创建其他形式,而不是试

有没有一种方法可以在模块中编写我的用户表单代码

我问这个问题的原因是因为我有一个多页面的用户表单,其背后的代码量越来越大。出于组织目的,我希望能够在不同的模块中分隔代码。但我不知道是否可以对userforms执行此操作(除了从userform事件调用子例程)

有没有一种方法可以在模块中编写用户表单代码,而不必从用户表单代码调用子例程?

一种方法是定义一个类并将控件动态添加到表单中,然后将这些控件与该类的事件相关联


不过,从您的描述来看,您的用户表单似乎做得太多了。我建议你考虑创建其他形式,而不是试图从一个单一的形式来做任何事情。您也许可以创建一个类来存储可能创建的两个或三个表单所共有的属性(和行为)。在打开第一个(主)窗体时实例化该类。

实际上很简单。表单模块中的代码可以调用其他模块中的子例程。因此,只需剪切特定例程的代码并将其粘贴到另一个模块中,适当地命名它,然后在表单模块中放置例程的名称以调用它。唯一的问题是,当代码位于单独的模块中时,您不能使用Me关键字。如果您在代码中使用它,那么将表单作为参数传递,并用变量替换我。一个简单的例子:假设你本来就有

Sub OK_Click()
    If Me.txtName<>"" then
          MsgBox "Ok",vbOkOnly,"It Worked"
    End If
End Sub
Sub DoOkClick( f as UserForm)
   if f.txtname<>"" then
       MsgBox "Ok",vbOkOnly,"It Worked"
   End If
End Sub
Sub Ok_Click
  DoOkClick Me
end sub