【发布时间】:2018-11-06 21:15:31
【问题描述】:
我有 3 个 xlsm 工作簿,里面有一堆宏。当每个工作簿打开时,用户会看到一个弹出窗口,询问他们是否要执行 Call_All 宏来运行它们。如果用户点击是,那么它会执行,如果不是,那么什么都不会发生。
我这样做的原因是因为我试图尽可能地自动化管理工作,并使流程尽可能地为用户提供“虚拟证明”。因此,如果我不弹出窗口询问用户他们想要做什么,而我只是在“此工作簿”文件中调用 Call_All 宏,那么无论何时打开文件 - 即使是要修改某些内容(例如作为代码),整个宏将执行。
现在,我遇到的问题是:
我运行了一系列脚本,最后一个脚本打开了第一个工作簿并弹出“是/否”。当用户为此工作簿单击“是”时,宏将完美执行。每个工作簿中的最后一个宏打开下一个 xlsm 文件,在此文件上再次询问用户是否要执行新工作簿中的宏。但是,这一次它没有执行,并且绝对没有任何反应。当打开下一个 xlsm 文件时,同样的事情再次发生。
注意:如果我单独打开每个 xlsm 文件并单击“是”,则它们可以正常工作。只有当我打开上一个工作簿中的文件时。
这是调用 Call_All 宏的代码(位于“ThisWorkbook”文件中):
Private Sub Workbook_Open()
Dim varResponse As Variant
varResponse = MsgBox("Run Macro?", vbYesNo, "Selection")
If varResponse <> vbYes Then
Exit Sub
Else
Call_All
End If
End Sub
所有 3 个工作簿中的代码完全相同。
【问题讨论】:
-
尝试在所有“宏”中搜索这些行 -
Application.EnableEvents = False。它存在吗? -
@Vityata 没有任何行带有 'Application.EnableEvents = False' 但有 'Application.ScreenUpdating = False' & 'Application.DisplayAlerts = False'
-
他们后面是
'Application.ScreenUpdating = True' & 'Application.DisplayAlerts = True'吗?因为如果不是,那么您将关闭屏幕更新并且永远不会重新打开它,因此当您运行宏时似乎没有发生任何事情,因为屏幕没有更新 -
@Banana 在打开下一个工作簿之前,我将 'Application.ScreenUpdating = True' 和 'Application.DisplayAlerts = True' 放在宏的末尾,但它仍然没有改变任何东西..
-
@Banana 我什至将 Application.EnableEvents = True 放在打开的工作簿的“ThisWorkbook”文件中