无法在打开时设置活动工作表

无法在打开时设置活动工作表

我有一个包含多个工作表(选项卡)的工作簿。我添加了以下代码,尝试在每次有人打开电子表格时显示“仪表板”选项卡。

Private Sub Workbook_Open()
    ActiveWorkbook.Sheets("Dashboard").Activate
End Sub

当我打开电子表格时,我会看到横幅PROTECTED VIEW。我单击“启用编辑”,然后出现以下错误:

运行时错误 91:未设置对象变量或 With 块变量

我还尝试了另一种选择MSDN 上的文档

Private Sub Workbook_Open()
    Worksheets("Dashboard").Activate
End Sub

这导致了另一个错误:

运行时错误 1004:Worksheet 类的 Activate 方法失败

答案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

现在一切正常。

相关内容