9

我有一个名为“日期”(对象名称为 A_Dates)的工作表,需要在它被激活时进行计算(值得注意的是,这在我的个人宏工作簿中)。我经常打开工作簿,其中有太多的计算让我无法进行自动计算。所以我将自动计算设置为手动,并在工作表中添加以下代码:

Private Sub Worksheet_Activate()
   A_Dates.Calculate
End Sub

在过去的 3 个月里,这一直运行良好,日复一日。昨天,它停止工作。它现在在声明行抛出这个错误:

Microsoft Visual Basic
Automation error
Unspecified error
[OK] [Help]

我尝试使用以下方法更改引用工作表的方式:

Sheets("Dates").Calculate

ActiveSheet.Calculate

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

On Error Resume Next

这并不能阻止它。我什至已经做到了:

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

headache:
   Exit Sub
End Sub

它仍然出现。我完全不知所措。帮助?

附加信息

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

应用程序的 Visual Basic

  • Microsoft Excel 12.0 对象库
  • OLE 自动化
  • Microsoft Office 12.0 对象库
  • Microsoft 脚本运行时
  • Microsoft Forms 2.0 对象运行时
  • Microsoft HTML 对象库
  • 微软互联网控制
  • Microsoft ActiveX 数据对象 2.8 库
  • Microsoft ActiveX 数据对象 Recordset 2.8 库
4

9 回答 9

14

我们遇到了同样的问题,但有一点不同——我们有几个人都成功地使用了相同的宏,但是一个人遇到了“自动化错误”“未指定错误”的问题。 另一个答案帮助我确定问题可能是由于“Microsoft ProgressBar Control”引起的。(非常感谢你)

但是,我没有删除表单,而是在用户的 PC 上取消注册并注册了 MSCOMCTL.OCX,该 PC 出现了问题,他又恢复了业务。我希望我知道是什么导致控件的注册向南走——这不是我第一次不得不追查这个控件的问题。

注销和注册控件:

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

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

 Regsvr32 c:\windows\SysWOW64\MSCOMCTL.OCX

注意:/u 取消注册 ocx

于 2012-09-19T19:34:39.323 回答
8

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

当 Excel “即时”编译时,它会创建 p 代码,然后将其编译为机器代码。有时,特别是在大量编辑的情况下,p 代码会损坏。复制代码,删除它,然后复制回来强制 Excel 重新生成 p 代码。

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

于 2012-09-04T22:03:54.873 回答
5

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

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

于 2012-09-05T04:59:00.487 回答
2

我只是遇到了这个问题,删除加载控件或添加/移动引用没有运气。

DoEvents通过为 Internet Explorer添加一个来修复,如下所示:

Do
  DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE

还要注意,这个值可以在“完成”和“忙碌”之间反弹,所以这里更健壮的循环可能是有益的。

于 2019-02-22T23:51:39.387 回答
1

我对这个问题的解决方法是在 VBA - 工具 - 参考中添加以下参考。

Microsoft ActiveX 数据对象 2.8 库 Microsoft ActiveX 数据对象 Recordset 2.8 库

于 2019-02-04T09:25:09.387 回答
1

在 Excel 停止工作之前,我看到此错误以对话框的形式弹出。我正在调试一个新脚本,它打开数百个 excel 文件并从每个文件中提取一些信息。为了解决这个问题,我添加了几个“DoEvents”命令,我的这个错误问题立即消失了。

于 2019-02-19T18:46:21.680 回答
1

只是给其他人带来“自动化错误”的注释。我也有一个,发现它是整数溢出的一种特殊情况,它会在循环中中断并给出自动化错误而不是整数溢出错误。如果您没有找到上述解决方案,请检查您是否使用了正确的尺寸。

于 2019-09-24T07:52:18.967 回答
0

尝试将您的程序编译到较低版本的操作系统。

于 2018-12-14T01:49:04.643 回答
0

我有两个“确切”的 VBA 代码块,一个已执行,另一个有自动化错误。我运行了调试器,它卡在了下面的代码块上:

Do While ie.readyState = READYSTATE_COMPLETE
Application.StatusBar = "Going to StackOverflow ..."
DoEvents
Loop

因此,我将有效的代码块和无效的代码块粘贴到单独的 Microsoft Word 文档中,然后使用“审阅/比较”功能。它揭示了错误:

Do While ie.readyState = READYSTATE_COMPLETE(等号 - 不正确)

对比

Do While ie.readyState <> READYSTATE_COMPLETE(双括号 - 正确)

我强烈建议使用 Word 来帮助在视觉上不清楚的地方。

是的!

于 2020-04-21T22:35:46.167 回答