Worksheet_Deactivate中的Excel VBA Application.StatusBar失败,并显示50290

我有一个工作表,根据哪个单元格被选中更新状态栏(这工作正常)。 我的问题是,当用户转到另一个工作表时,将StatusBar设置为空的代码:

Private Sub Worksheet_Deactivate() Application.StatusBar = vbNullString ' Run time error here End Sub 

Err.Description是:对象'_Application'的方法'StatusBar'失败,“Err.Number是:50290。

只有当用户从Worksheet快速切换到Worksheet(通过按Ctrl + PgUp或Ctrl + PgDown),并且在缓慢切换到另一个工作表的情况下不会发生此错误。

为什么我有这个错误?

只要将其设置为False

 Application.StatusBar = False 

来自微软:

如果Microsoft Excel控制了状态栏,则此属性将返回False。 要恢复默认状态栏文本,请将该属性设置为False; 即使状态栏被隐藏,这也是有效的。

我发现了这个问题。 当事件处理程序开始执行时,Excel应用程序可能没有准备好,因此如果代码引用与应用程序相关的对象,则必须检查它:

 Private Sub Worksheet_Activate() If Application.Ready = False Then Exit Sub ' Rest of the code referring to Application.x or Me.y or ActiveSheet.z, etc. End Sub