Worksheet_Activate导致"自动化错误未指定错误"的原因是什么?

Far*_*que 7 error-handling vba excel-2007

我有一个名为"Dates"(对象名称为A_Dates)的工作表,需要在激活时进行计算(可能值得注意的是,这是在我的Personal宏工作簿中).我经常打开工作簿,有太多的计算在我身上进行自动计算.所以我将自动计算设置为手动,并在工作表中的以下代码:

Private Sub Worksheet_Activate()
   A_Dates.Calculate
End Sub
Run Code Online (Sandbox Code Playgroud)

这在过去的3个月里一直很好,日复一日.昨天,它停止了工作.它现在在声明行上抛出此错误:

Microsoft Visual Basic
Automation error
Unspecified error
[OK] [Help]
Run Code Online (Sandbox Code Playgroud)

我尝试改变我引用工作表的方式,使用:

Sheets("Dates").Calculate
Run Code Online (Sandbox Code Playgroud)

ActiveSheet.Calculate
Run Code Online (Sandbox Code Playgroud)

无济于事.我还包括错误处理:

On Error Resume Next
Run Code Online (Sandbox Code Playgroud)

这并不妨碍它.我甚至走得很远:

Private Sub Worksheet_Activate()
   On Error GoTo headache
   Sheets("Dates").Calculate
Exit Sub

headache:
   Exit Sub
End Sub
Run Code Online (Sandbox Code Playgroud)

它仍然显示出来.我完全不知所措.救命?

附加信息

我有以下参考资料,并在本工作簿的各种宏中使用它们:

Visual Basic for Applications

  • Microsoft Excel 12.0对象库
  • OLE自动化
  • Microsoft Office 12.0对象库
  • Microsoft Scripting Runtime
  • Microsoft Forms 2.0对象运行时
  • Microsoft HTML对象库
  • Microsoft Internet Controls
  • Microsoft ActiveX数据对象2.8库
  • Microsoft ActiveX数据对象Recordset 2.8库

小智 12

我们遇到了同样的问题,但有一个转折 - 我们有几个人都成功使用相同的宏,但一个人有"自动化错误""未指定的错误"问题.您的回答帮助我确定问题可能是由"Microsoft ProgressBar Control"引起的.(非常感谢你)

但是我没有注册表单,而是取消注册并在用户的PC上注册了MSCOMCTL.OCX,这些PC遇到了问题,他又重新开始了业务.我希望我知道是什么原因导致控制器的注册向南 - 这不是我第一次不得不追查这个控件的问题.

要取消注册并注册控件:

使用"提升的命令提示符"(以管理员身份运行命令提示符),发出以下命令:

 Regsvr32 /u c:\windows\SysWOW64\MSCOMCTL.OCX

 Regsvr32 c:\windows\SysWOW64\MSCOMCTL.OCX
Run Code Online (Sandbox Code Playgroud)

注意:/ u取消注册ocx


Dic*_*ika 6

每当我遇到这样的奇怪错误时,我要做的第一件事就是用http://www.appspro.com/Utilities/CodeCleaner.htm清理代码.它是一个免费的插件,但你也可以手动完成.只需将代码复制出模块并复制到文本文件中(或右键单击并导出).然后删除模块中的代码,编译并保存,然后重新放入代码.

当Excel"动态"编译时,它会创建p代码,然后将其编译为机器代码.有时候,特别是在编辑过程中,p代码会被破坏.复制代码,删除代码并复制回来强制Excel重新生成p代码.

我用这种方法解决了一些非常奇怪的行为.希望它也适合你.


Far*_*que 5

我发现了问题。我的一种表单上的控件显然已停止工作,这产生了连锁反应。

有问题的控件是“ Microsoft ProgressBar控件,版本6.0”。我不知道为什么它停止工作,但是删除表格(当然还有对它的所有引用)解决了这个问题。