如何将代码模块中包含的VBA代码放在表单模块中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将代码模块中包含的VBA代码放在表单模块中相关的知识,希望对你有一定的参考价值。

我在“代码模块”中有一个按钮来运行请求。按钮旁边是一个标签,在按钮完成运行后立即显示一个复选标记。

按钮代码在代码模块中。带有复选标记的标签代码包含在工作簿和工作表模块中。

现在,问题是当我按下按钮时,它运行得非常好并且做了它应该做的事情,但带有复选标记的标签没有被激活。原因可能是因为我没有在我的代码模块中包含/引用工作簿/工作表模块。希望有点帮助。

enter image description here

工作簿中的代码模块:

Option Explicit
Private Sub Workbook_Open()
Call Tabelle1.prcResetLabels
End Sub

图纸模块中的代码:

Option Explicit

Private Sub Schaltfläche2_Klicken()
Call prcSetLabel(probjLabel:=Label1)
End Sub

Private Sub prcSetLabel(ByRef probjLabel As MSForms.Label)
With probjLabel
.Caption = "P"
End With
End Sub

Friend Sub prcResetLabels()
Dim objOLEObject As OLEObject
For Each objOLEObject In OLEObjects
   With objOLEObject
        If .progID = "Forms.Label.1" Then _
           .Object.Caption = vbNullString
   End With
Next
End Sub

Codemodul中的代码:

Public Sub Schaltfläche2_Klicken()
With Sheets("Table1")
  .Range("A1").End(xlUp).Offset(1, 0).Value = Environ("USERNAME")
End With
End Sub
答案

答案很简单:

 Sub Schaltfläche2_Klicken()
 Call prcResetLabels
 With Sheets("Table1")
 .Range("A1").End(xlUp).Offset(1, 0).Value = Environ("USERNAME")
 End With
 Call prcSetLabel(probjLabel:=Table1.Label1)
 End Sub

 Private Sub prcSetLabel(ByVal probjLabel As Object)
 With probjLabel
 .Object.Caption = "P"
 End With
 End Sub
 Public Sub prcResetLabels()
 Dim objOLEObject As OLEObject

 For Each objOLEObject In Table1.OLEObjects
 With objOLEObject
     If .progID = "Forms.Label.1" Then _
        .Object.Caption = vbNullString
 End With
 Next
 End Sub

以上是关于如何将代码模块中包含的VBA代码放在表单模块中的主要内容,如果未能解决你的问题,请参考以下文章

访问模块中包含的 ruby​​ 方法的符号

我希望从 ms-access 2013 数据库中的所有表单、报告和模块中导出 vba 源代码

将 php 中包含的 HTML 表单信息写入 CSV 文件

如何去除pycharm中代码下的波浪线

通过模块 [VBA] 获取表单字段值

Excel vba以编程方式将代码添加到工作表模块