首页 文章

运行任何宏时出现“模块中的编译错误”[Excel VBA]

提问于
浏览
0

尝试在以前工作的工作簿中运行任何宏时遇到以下错误:

Error encountered when macro is run

在进行各种VBA开发之后,它在前一天的最后一次保存和关闭之前一直工作,但是在今天早上打开工作簿时,我遇到了上述错误 . 错误中引用的模块是在Workbook_Open操作中执行的功能 .

我仍然能够访问VBA编辑器并尝试进行一些调试,这实际上是注释掉引用模块的部分,直到错误不再显示为止 . 尽管做了这些努力,但是在尝试运行新宏的任何时候都会出现错误 .

看来这个错误是由于某种文件损坏而发生的,并且在文件关闭然后第二天重新打开之前没有显示出来 . 我能够从前一天早上恢复自动备份版本,完全没有错误地打开(缺少大约4个小时的工作,但比完全丢失文件更好) . 这个恢复的文件有宏功能正常,看似已损坏的文件给出了编译错误(并且这些宏在文件版本之间的4小时内没有被修改) . 这进一步向我证实,这不是代码的变化,而是某种VBA代码结构的破坏 .

有没有其他人遇到过这个问题,知道哪里开始寻找恢复最新的文件?

1 回答

  • 0

    在我在已损坏的版本中创建的还原文件中重新构建模块时,我意识到在前一天我已经复制并粘贴了(使用Ctrl-A,Ctrl-C和Ctrl-V)一些代码来自模块的工作表对象(我原本希望代码能够在导出工作表时随工作表一起迁移,然后改变主意并希望代码可以访问工作簿中的其他工作表,同时牺牲代码的能力用出口表) .

    当我在VBA编辑器中执行复制和粘贴操作时,选择列表中的宏(将宏指定给形状对象时)的宏列出了模块名称作为“父”子地址(类似于Sheet对象如何在工作表中显示为“Sheet1.ExampleSub”) . 我的潜艇被显示为“NewModule.ExampleSub”,当时我一无所知,除了它只是有点奇怪/古怪但不是什么大不了的 . 将这些宏分配给各种形状对象后,它们测试得很好,我继续我的工作 . 在此之后的任何时候我都不能关闭并重新打开工作簿,这就是为什么我在第二天之前没有遇到任何编译错误 .

    这是我能想到的唯一可能导致工作簿结构错误的问题,现在我已经在恢复的文件版本中重新创建了模块,宏正常工作,文件关闭并重新打开而没有错误或问题 . 我仍然不确定为什么在Sheet对象中执行Ctrl-A选择代码并在模块中复制粘贴会破坏工作簿结构,但在这种情况下似乎已经这样做了 .

相关问题