使用VBA这个词,我可以将表单的代码模块划分为两个代码模块吗?

使用VBA这个词,我可以将表单的代码模块划分为两个代码模块吗?,vba,forms,module,ms-word,Vba,Forms,Module,Ms Word,在我的Word文件中,我有一个名为MyNiceForm的表单。当然,有一个与之关联的代码模块,其中包含_Click()例程。(也许这些被称为事件处理程序,但这并不影响我的问题。) 我有太多的_Click()例程,我想将它们拆分成一个单独的代码模块,但我不太明白如何做到这一点。我确信VBA不允许我将_Click()例程放入常规代码模块(“非形式”代码模块) 否,单击例程必须保留在用户表单代码模块中。严格来说,UserForm是文档“容器”中的一个类。UserForm设计器和代码模块都是类/User

在我的Word文件中,我有一个名为MyNiceForm的表单。当然,有一个与之关联的代码模块,其中包含_Click()例程。(也许这些被称为事件处理程序,但这并不影响我的问题。)


我有太多的_Click()例程,我想将它们拆分成一个单独的代码模块,但我不太明白如何做到这一点。我确信VBA不允许我将_Click()例程放入常规代码模块(“非形式”代码模块)

否,
单击
例程必须保留在用户表单代码模块中。严格来说,UserForm是文档“容器”中的一个类。UserForm设计器和代码模块都是类/UserForm对象的一部分。所有按钮的“单击”例程都依赖于此链接

(文档本身和文档的VBA项目中的
ThisDocument
模块的情况类似。文档是类/对象,而
ThisDocument
代码模块。文档表面上的ActiveX控件(即用户表单控件)也依赖于可视部分和代码之间的链接。)

您可以做的是将Click过程中的代码移动到另一个(普通)模块。在“调用”该模块中的代码的过程中只留下一行代码。如果代码使用UserForm和/或其上的控件,则需要将这些对象作为参数传递

可能是这样的:

'Code in the UserForm module
Private Sub CheckBox1_Click()
  CheckBoxClick Me, Me.CheckBox1
End Sub

'Code in a regular module
Sub StartUserForm()
    Dim frm As frmTest

    Set frm = New frmTest
    frm.Show
End Sub

Sub CheckBoxClick(frm As frmTest, ck As MSForms.CheckBox)
    Debug.Print frm.NAME, ck.Caption, ck.value
    frm.CheckBox2.value = Not ck.value        
End Sub

否,
单击
例程必须保留在用户表单代码模块中。严格来说,UserForm是文档“容器”中的一个类。UserForm设计器和代码模块都是类/UserForm对象的一部分。所有按钮的“单击”例程都依赖于此链接

(文档本身和文档的VBA项目中的
ThisDocument
模块的情况类似。文档是类/对象,而
ThisDocument
代码模块。文档表面上的ActiveX控件(即用户表单控件)也依赖于可视部分和代码之间的链接。)

您可以做的是将Click过程中的代码移动到另一个(普通)模块。在“调用”该模块中的代码的过程中只留下一行代码。如果代码使用UserForm和/或其上的控件,则需要将这些对象作为参数传递

可能是这样的:

'Code in the UserForm module
Private Sub CheckBox1_Click()
  CheckBoxClick Me, Me.CheckBox1
End Sub

'Code in a regular module
Sub StartUserForm()
    Dim frm As frmTest

    Set frm = New frmTest
    frm.Show
End Sub

Sub CheckBoxClick(frm As frmTest, ck As MSForms.CheckBox)
    Debug.Print frm.NAME, ck.Caption, ck.value
    frm.CheckBox2.value = Not ck.value        
End Sub

看起来像是X-Y问题。如果你有太多的代码,表单变得一团糟,很难导航(但它仍然可以正常工作),试着把它放在上面,看看你得到了什么建议来清理它。您可能会学到一些关于VBA中OOP和设计模式的知识;-)看起来像是X-Y问题。如果你有太多的代码,表单变得一团糟,很难导航(但它仍然可以正常工作),试着把它放在上面,看看你得到了什么建议来清理它。您可能会学到一些关于VBA中OOP和设计模式的知识;-)