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

时间:2016-12-07 17:17:37

标签: excel vba excel-vba

我有一个工作表,它根据选择的单元格更新StatusBar(这很好)。我的问题是,当用户转到另一个工作表时,使用将StatusBar设置为空的代码:

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

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

仅当用户从“工作表”快速更改为“工作表”(通过按Ctrl + PgUp或Ctrl + PgDown)时才会出现此错误,并且在慢慢切换到另一个工作表时不会发生此错误。

为什么会出现此错误?

2 个答案:

答案 0 :(得分:1)

将其设为False

Application.StatusBar = False
来自Microsoft的

  

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

答案 1 :(得分:0)

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

Here is the table structure of `facility` table:
| facility | CREATE TABLE `facility` (
  `FacilityId` bigint(20) NOT NULL auto_increment,
  `FacilityName` varchar(45) default NULL,
  `ViewerId` bigint(20) default NULL,
  `MessageTemplate` varchar(256) default NULL,
  `RecApp` varchar(60) default NULL,
  `RecFacility` varchar(60) default NULL,
  `SendApp` varchar(60) default NULL,
  `SendFacility` varchar(60) default NULL,
  `MirthChannelEnable` int(1) NOT NULL default '0',
  `CompletenessCriteria` int(2) NOT NULL,
  `RetryLimit` int(2) NOT NULL default '3',
  `WatchDelay` int(11) NOT NULL,
  `RetryDelay` int(11) NOT NULL,
  `AckTimeOut` int(11) NOT NULL,
  `KeepConOpen` int(1) NOT NULL default '0',
  `SendTimeout` int(11) NOT NULL,
  `EncryptURL` int(1) NOT NULL default '0',
  `Host` varchar(15) NOT NULL,
  `Port` int(11) NOT NULL,
  `CreationDate` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `Description` varchar(256) default NULL,
  `EventLogOffset` int(11) NOT NULL default '0',
  PRIMARY KEY  (`FacilityId`),
  KEY `Fk_Fac_ViewerId_idx` (`ViewerId`),
  CONSTRAINT `Fk_Fac_ViewerId` FOREIGN KEY (`ViewerId`) REFERENCES `viewer` (`ViewerId`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |