VBA MS Excel:我可以在一个模块中写用户代码吗?

快速的问题,

有没有一种方法可以将我的Userform代码写入模块中?

我问这个问题的原因是因为我有一个多页面的用户表单,后面有越来越多的代码。 为了组织的目的,我希望能够在不同的模块中分隔代码。 但我不知道这是否可以为用户窗体完成(除了从用户窗体事件中调用子程序)。

有没有办法写一个模块中的UserForm代码,而不必从用户窗体代码调用子例程?

谢谢,

其实很简单 表单模块中的代码可以调用其他模块中的子例程。 因此,简单地将你的代码剪切成一个特定的例程,然后粘贴到另一个模块中,适当地命名它,然后在表单模块中放置例程的名称来调用它。 唯一的问题是,当代码在一个单独的模块中,你不能使用Me关键字。 如果你在你的代码中使用它,那么把表单作为一个parameter passing,用你的variablesreplaceMe。 一个简单的例子:假设你通常拥有

Sub OK_Click() If Me.txtName<>"" then MsgBox "Ok",vbOkOnly,"It Worked" End If End Sub 

然后,您可以在一个单独的模块中创build以下内容:

 Sub DoOkClick( f as UserForm) if f.txtname<>"" then MsgBox "Ok",vbOkOnly,"It Worked" End If End Sub 

然后用replacebutton点击代码

 Sub Ok_Click DoOkClick Me end sub 

这里概述一种方法,包括定义一个类并dynamic添加控件到表单,然后将这些控件与类的事件相关联。

不过,从你的描述来看,这听起来像是你的用户表单做得太多了。 我build议你考虑创build其他forms,而不是试图从单一forms做所有事情。 你也许可以创build一个类来存储你可能创build的两个或三个表单所共有的属性(和行为)。 当第一个(主)表单打开时实例化类。