我有一个包含多个工作表(选项卡)的工作簿。我添加了以下代码,尝试在每次有人打开电子表格时显示“仪表板”选项卡。
Private Sub Workbook_Open()
ActiveWorkbook.Sheets("Dashboard").Activate
End Sub
当我打开电子表格时,我会看到横幅PROTECTED VIEW
。我单击“启用编辑”,然后出现以下错误:
我还尝试了另一种选择MSDN 上的文档:
Private Sub Workbook_Open()
Worksheets("Dashboard").Activate
End Sub
这导致了另一个错误:
答案1
这主要是因为工作簿尚未“准备好”执行。但您可以在这里使用一个技巧:
在模块中:
Public Sub InitActive()
ActiveWorkbook.Sheets("Dashboard").Activate
End Sub
并将初始宏更改为:
Private Sub Workbook_Open()
Application.OnTime Now, "InitActive"
End Sub
Application.OnTime 默默等待,直到 excel 告诉它“准备好”...这样就不会弹出错误...你仍然应该使用这样的代码名称Sheet3.Activate
(如果你明白我的意思)
答案2
显然,这个已知问题影响 Excel 2013 Office 365 版本并且导致我的麻烦。
解决方法是移至Activate
事件Workbook_Activate()
而不是Workbook_Open()
:
Private Sub Workbook_Activate()
Sheet1.Activate
End Sub
Private Sub Workbook_Open()
End Sub
现在一切正常。