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

时间:2015-11-08 10:04:55

标签: 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

UDFs 模块中的代码:

Function hasHyperlink(rng As Range) As Boolean
    hasHyperlink = rng.Hyperlinks.Count
End Function

当我在活动工作表包含使用我的用户定义函数的条件格式时打开文件时,Workbook_open()子实体不会执行。

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

我不想在特定工作表上关闭工作簿或调用Workbook_BeforeClose()子工作以激活" safe"关闭工作簿之前的工作表..

任何有解决方案想法的人?这是excel中的错误吗?

1 个答案:

答案 0 :(得分:1)

有关类似的讨论,请参阅:Excel Workbook Open Event macro doesn't always run

我认为最好的答案是下面的一个答案中出现的答案:

  

考虑到类似链接的答案,我想出了一个解决方案。一个   工作簿中的私有布尔变量用于确定是否   workbook_open事件被解雇了。如果不是我添加处理程序   workbook_activate和workbook_sheet_change并重新运行   如果未设置变量,则为workbook_open事件。 - DrMarbuse

更简单,如果可行,只需将代码移动到Workbook_Activate事件即可。我过去曾经这样做过,当我遇到Workbook_Open没有解雇的问题时(我认为我没想到为什么不这样做)。