excel - 如何在另一个工作簿的事件结束时触发
问题描述
我有一个工作簿 (A),可以对打开的事件进行合理的检查。现在我想写另一个 makro 放在另一个工作簿 (B) 中,打开工作簿 A,等到看似合理的检查完成,如果一切正常,我想对数据进行排序并复制一个子集。
有谁知道这是否可以做到以及如何做到?我无法为此提供任何代码,因为我什至没有办法。
解决方案
不确定这是否符合您的需求,但这是我的想法:
工作簿 A中的更改:将 WB a 中的合理性检查移动到一个函数中,如果一切正常,该函数将返回一个布尔信号。此函数需要在模块中,并且必须声明为public
.
Function CheckPlausibility() as Boolean
(...do your checks here)
CheckPlausibility = True ' Or False
End Function
在 Workbook-Open 中,调用此函数并对结果做出反应(“阻塞”)
Private Sub Workbook_Open()
If not CheckPlausibility then
(...Disable code)
End If
End Sub
在工作簿 B中:Application.EnableEvents = False
在打开工作簿 A 之前设置 - 这将阻止执行Open
-code。您可以通过调用作为模块一部分的任何公共子或函数Application.Run
(还有另一种方法是在工作簿 B 中引用工作簿 A,但这会将这些书粘合在一起,并且当您打开 B 时,A 将随时自动打开)。
const wbName = "C:\temp\A.xlsm"
Dim wb as Workbook, wbAIsOkay as Boolean
Application.EnableEvents = False
Set wb = Workbooks.Open(wbName)
wbAIsOkay = Application.Run(wbName & "!CheckMe")
Application.EnableEvents = True
If wbAIsOkay Then
(...)
End If
推荐阅读
- windows - 带有引号的命令行参数的 Windows 快捷方式
- c# - C#一次更改所有按钮的背景颜色
- performance - 加载大量数据 - 允许的内存大小已用尽
- java - Swing Java 中带有多帧应用程序的任务栏图标
- git - git:检查现有文件的分支而不覆盖它们
- firebase - Firebase 控制台和 BigQuery 之间的差异
- python - PySide:文件夹的 TreeView 小部件
- c - 如何获得带有预览的文件夹图标?
- ios - 在 SwiftUI 中更改弹出框大小
- python - 执行使用 Pyinstaller 构建的 Python 应用程序会出现“无法执行脚本主程序”