2013-07-05 56 views
1

快速问题,VBA MS Excel:我可以在模块中编写UserForm代码吗?

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

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

有没有办法在模块中编写UserForm代码,而无需从用户窗体代码调用子例程?

谢谢,

回答

0

的一种方法是outlined here涉及限定一类和添加控件以动态的形式,然后将其与所述类的事件相关联。

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

2

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

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 
相关问题