Worksheet_Activate在工作簿打开时不会触发

时间:2015-02-04 22:09:40

标签: excel vba events activation

两天前,当我打开文档时,我在Excel工作表中填充ActiveX组合框的代码停止运行。我发现当我打开工作表时,Worksheet_Activate()不再触发。

现在即使我在Sheet 1中创建了一个只有以下代码的简单工作簿,当我打开工作簿时它也不会触发。

Private Sub Worksheet_Activate()
   MsgBox ("Worksheet has been activated")
End Sub

但是,如果我单击另一个选项卡并单击返回包含代码的工作表,则会触发。

我尝试过添加Application.EnableEvents = True和Worksheets(“Sheet1”)。激活Workbook_Open(触发)但仍然没有运气。

我们正在运行Excel 2010,同样的问题也发生在同事的机器上。有什么想法吗?

3 个答案:

答案 0 :(得分:5)

我知道这是一个较旧的问题,但是没有必要先激活另一个工作表,然后重新激活你想要的那个:

>>=

Private Sub Workbook_Open() ' Bug in Excel: ' The Worksheet_Activate event does not fire for the sheet that is active ' when the workbook is opened, so call it explicitely. Make sure that ' Worksheet_Activate() is declared as Public. ' Ignore ActiveSheets without (Public) Worksheet_Activate() On Error Resume Next Call ActiveSheet.Worksheet_Activate On Error GoTo 0 End Sub 中引用 Name 的工作表也不是一个好习惯,除非你有充分的理由这样做。更好的是使用 CodeName 。有关详细信息,请参阅this post

答案 1 :(得分:2)

Workbook_Open事件中,关闭ScreenUpdating,激活另一张表,激活您希望事件触发的工作表,然后重新开启ScreenUpdating

答案 2 :(得分:0)

此设置也可能在起作用:

Application.ScreenUpdating = true