在具有条件格式的工作表上打开Excel 2010文件时,不会执行Workbook_open()

Max*_*gal 5 excel vba excel-vba

我有一个名为travels.xlsm的工作簿.

ThisWorkbook中我有这个代码:

Private Sub Workbook_Open()
    MsgBox "hello"
    Application.Calculation = xlManual

    ActiveWorkbook.RefreshAll   'refresh the querytables without recalculating

    Application.Calculation = xlAutomatic
End Sub
Run Code Online (Sandbox Code Playgroud)

UDFs模块中的代码:

Function hasHyperlink(rng As Range) As Boolean
    hasHyperlink = rng.Hyperlinks.Count
End Function
Run Code Online (Sandbox Code Playgroud)

当我在活动工作表包含使用我的用户定义函数的条件格式时打开文件时 - Workbook_open()sub将不会执行.

当活动工作表在条件格式化中不使用此功能时关闭工作簿时,再次保存并打开 - 它按预期执行.这有点奇怪.

我不想在关闭工作簿Workbook_BeforeClose()之前关闭特定工作表上的工作簿或调用sub来激活该"安全"工作表.

有想法解决的人吗?这是excel中的错误吗?

Dou*_*ncy 1

有关类似的讨论,请参阅:Excel 工作簿打开事件宏并不总是运行

\n\n

我认为最好的答案是下面出现在对其中一个答案的评论中的答案:

\n\n
\n

考虑到类似链接的答案,我想出了一个解决方案。工作簿中的私有布尔变量用于确定是否触发了 workbook_open 事件。如果不是,我将处理程序添加到workbook_activate 和workbook_sheet_change,并在未设置变量的情况下重新运行workbook_open 事件。\xe2\x80\x93 DrMarbuse

\n
\n\n

如果可行的话,更简单,只需将代码移至 Workbook_Activate 事件即可。过去,当我遇到 Workbook_Open 未触发的问题时,我就这样做过(我不认为我曾经弄清楚为什么它没有触发)。

\n