【问题标题】:Workbook_open() won't execute when Excel 2010 file opened on a sheet with conditional formatting在具有条件格式的工作表上打开 Excel 2010 文件时,Workbook_open() 不会执行
【发布时间】:2015-11-08 10:04:55
【问题描述】:

我有一个名为 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() sub 不会执行。

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

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

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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

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

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

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

    如果可行,甚至更简单,只需将您的代码移至 Workbook_Activate 事件。过去,当我遇到 Workbook_Open 无法触发的问题时,我已经这样做了(我想我从来没有弄清楚为什么它没有触发)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-21
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 2012-04-07
      • 1970-01-01
      相关资源
      最近更新 更多