当打开工作簿时,Workbook_Open子将不会运行?

这个程序应该是创build一个button,用户可以按下来激活一个不同的子。 从我的在线search看来,打开工作簿时,下面的子文件应该激活,但是不是?

我究竟做错了什么?

Option Explicit Private Sub Workbook_Open() Dim btn As Button Dim rng As Range With Worksheets("Sheet1") Set rng = .Range("B2:C2") Set btn = .Buttons.Add(rng.Left, rng.Top, rng.Width, rng.Height) With btn .Caption = "To begin the program, please click this button" .AutoSize = True .OnAction = "TableCreation1" End With End With End Sub 

确保您的Private Sub Workbook_Open()子例程粘贴在This Workbook对象中,而不是粘贴在Module,Form或Sheet对象中。

有趣。 在2009年,与条形格式打开的表单发生了冲突,如vbforum post中所述 。

看来,这个错误仍然存​​在于Excel中,并防止发生workbook_open事件。 我有一个工作簿(旧的XLS-二进制格式),它不会在Excel 2003和2007中触发事件,而是在2013年。我从第一个工作表中删除了所有条件格式,但仍然无法使workbook_open过程在老年人Excel中运行-versions。

我在分布式工作簿中使用的解决方法是在工作簿中使用本地variables和第二个事件,如下所示:

 '' ' private variable Private wbOpenEventRun as Boolean '' ' procedure to be called by excel when workbook opens Private Sub Workbook_Open() wbOpenEventRun = true ' perform tasks End Sub '' ' the selection change event fires usually. ' performance is not reduced Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Not wbOpenEventRun Then Workbook_Open ' perform tasks in reaction of selection change events, if required End Sub 

我知道这个post已经hibernate了一段时间,但我只是挣扎了几个小时来解决这个问题。 这是最奇怪的事情,但我终于注意到,我的工作表之一是在“页面视图”…一旦我把它放到“正常”,我的Workbook_Open()函数再次开始正常工作。 非常奇怪 – 绝对是一个Excel的错误…只是很高兴我终于解决了它…希望它可以帮助别人…

我find的解决scheme是运行下面的代码,然后“打开”事件工作。

 Sub EventRestore() Application.EnableEvents = True End Sub