vba - 如何将代码模块中包含的VBA代码放入工作表模块中
问题描述
我在运行请求的“代码模块”中有一个按钮。按钮旁边是一个标签,当按钮完成运行时,它会显示一个复选标记。
按钮代码在代码模块中。带有复选标记的标签代码包含在工作簿和工作表模块中。
现在,问题是当我按下按钮时,它运行得非常好并且做它应该做的,但是带有复选标记的标签没有被激活。原因可能是因为我没有在我的代码模块中包含/引用工作簿/工作表模块。希望有点帮助。
工作簿模块中的代码:
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
推荐阅读
- python - 如何在其他几个列上添加一个权重列?
- node.js - 为什么我在尝试读取过去的交易时从贝宝获得代码 404
- node.js - 我想在 MongoDB 中列出用户和所有用户的评论。可能吗?
- spring - Spring Cloud Gateway Predicate中matchOptionalTrailingSeparator有什么用
- html - 如何在倾斜的 div 中使图像“正常”?
- python - 应用返回包含列表的元组的函数时出现 Pandas AssertionError
- docker - 容器优化操作系统 (Docker) 上的 SSL 证书
- uwp - UWP 地图控件 - 调整 MapIcon 图像的大小
- c# - 创建不重复调用代码的类
- node.js - 在 Node.js 中读取计算机的声音输出并分析声音