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



有没有办法在模块中编写Userform代码?

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

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

实际上它很简单。表单模块中的代码可以调用其他模块中的子例程。因此,只需将特定例程的代码剪切并粘贴到另一个模块中,适当地命名它,然后在表单模块中放置例程的名称来调用它。唯一的问题是,当代码位于单独的模块中时,不能使用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

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

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

相关内容

  • 没有找到相关文章

最新更新