我有一个名为 Travels.xlsm 的工作簿。
在ThisWorkbook中,我有以下代码:
Private Sub Workbook_Open()
MsgBox "hello"
Application.Calculation = xlManual
ActiveWorkbook.RefreshAll 'refresh the querytables without recalculating
Application.Calculation = xlAutomatic
End Sub
以及 UDF 模块中的代码:
Function hasHyperlink(rng As Range) As Boolean
hasHyperlink = rng.Hyperlinks.Count
End Function
当我打开文件时,事件工作表包含使用用户定义函数的条件格式 - Workbook_open()
子函数将不会执行。
当我关闭工作簿时,事件工作表在条件格式中未使用此功能,保存并再次打开 - 它会按预期执行。 这有点奇怪。
我不想关闭特定工作表上的工作簿,也不想在关闭工作簿之前调用 Workbook_BeforeClose()
子函数来激活该“安全”工作表。
有人有解决方案吗?这是 Excel 中的错误吗?
最佳答案
有关类似的讨论,请参阅:Excel Workbook Open Event macro doesn't always run
我认为最好的答案是下面出现在对其中一个答案的评论中的答案:
I came up with a solution considering an answer to a similar link. A private boolean variable in the workbook is used to determine if the workbook_open event was fired. If not the I added handlers to workbook_activate and to workbook_sheet_change and rerun the workbook_open event if the variable was not set. – DrMarbuse
更简单的是,如果可行,只需将代码移至 Workbook_Activate 事件即可。过去,当我遇到 Workbook_Open 未触发的问题时,我就这样做过(我想我从来没有弄清楚为什么它没有触发)。
关于vba - 在具有条件格式的工作表上打开 Excel 2010 文件时,Workbook_open() 将不会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33592783/