【问题标题】:Workbook_Open() won't execute Excel 2011Workbook_Open() 不会执行 Excel 2011
【发布时间】:2019-04-24 10:49:05
【问题描述】:

使用 Excel 2011(应与 Excel 2010 相同)

代码位于 Excel 中的“ThisWorkbook”模块下

事件已启用

宏已启用

我似乎无法让Workbook_Open()Workbook_BeforeClose() 执行。我已经阅读了很多关于这个主题的帖子,但没有解决方案。这是一些应该执行但不执行的简单测试代码。任何帮助将不胜感激。

Private Sub Workbook_Open()
    ActiveSheet.Range("BL4").Value = "Open is working"
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next 'in case the menu item has already been deleted
    ActiveSheet.Range("BL5").Value = "Close is working"
End Sub

【问题讨论】:

  • 注释掉On Error Resume Next时是否出现错误?尝试将MsgBox "Hello" 添加到这两个事件中,看看是否至少会显示一条消息。
  • 您是说“ThisWorkBook”而不是“ThisSheet”吗?
  • 它们可以是私有的。不会有什么不同。
  • 您是把这些放在 Workbook 对象中还是放在单独的模块中?
  • 为了完整起见,您的代码在运行 Excel 2013 的 Windows 7 PC 和在 OS X 下运行 Excel 2013 的 MacBook Pro 上运行良好。只是一个愚蠢的想法,但几乎让我失望。您正在查看右侧的单元格 BL4 和 5 不在屏幕右侧?

标签: excel vba


【解决方案1】:

首先确保您已将它放在正确的位置并启用了宏。

然后,尝试将此行添加到 workbook_open 方法:

MsgBox "HELLO"

你看到消息框了吗?你选择的单元格看起来有点奇怪

另外,我认为您需要使用 .xlsm 文件而不是 .xlsx(虽然不确定)

最后,如果一个插件调用类似这一行的东西,它可能会导致你的事件不触发..

Application.EnableEvents = False

因此,请确保您在没有打开其他工作表或插件的情况下对其进行了测试。

【讨论】:

  • 太棒了,MsgBox 有效。那么为什么我的其他语句不执行。就像写一个单元格一样。为什么这不起作用。我错过了什么?
  • 基于 msgbox 的工作,我确信它们确实执行了。您正在写入单元格“BL4”,您必须向右滚动才能看到。你的意思是放“B4”吗??
  • 不知道为什么,但这在今天有效。我不确定发生了什么变化,但现在可以了。谢谢大家。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
  • 2013-05-07
相关资源
最近更新 更多