1

有没有办法可以在模块中编写我的用户表单代码?

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

有没有办法在模块中编写用户表单代码而不必从用户表单代码调用子例程?

4

2 回答 2

2

其实很简单。您的表单模块中的代码可以调用其他模块中的子程序。因此,只需为特定例程剪切代码并将其粘贴到另一个模块中,适当地命名它,然后在表单模块中放置例程的名称以调用它。唯一的问题是,当代码位于单独的模块中时,您不能使用 Me 关键字。如果您在代码中使用它,则将表单作为参数传递,并将 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
于 2014-08-06T09:35:16.063 回答
0

此处概述了一种方法,该方法涉及定义一个类并将控件动态添加到表单中,然后将其与该类的事件相关联。

但是,根据您的描述,听起来您的 UserForm 做得太多了。我建议您考虑创建其他表单,而不是尝试从单个表单完成所有操作。您也许可以创建一个类来存储您可能创建的两个或三个表单共有的属性(和行为)。在打开第一个(主)窗体时实例化该类。

于 2013-07-05T17:58:15.950 回答