工作表打开时,Worksheet_Activate不会触发

前两天我的代码来填充我的Excel表单中的ActiveXcombobox停止运作,当我打开文档。 自从我发现Worksheet_Activate()不再触发我打开工作表时。

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

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

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

我尝试添加Application.EnableEvents = True和工作表(“Sheet1”),激活到Workbook_Open(这确实触发),但仍然没有运气。

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

在您的Workbook_Open事件中,closuresScreenUpdating ,激活其他工作表,激活您希望事件触发的工作表,重新打开ScreenUpdating

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

 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 

除非您有足够的理由这样做,否则按照名称(Worksheets("Sheet1")名称引用工作表也不是一个好习惯。 更好的是使用CodeName 。 有关详细信息,请参阅此帖 。