吉列尔莫有一系列常规运行的宏,当他手动运行每个宏时,它们可以正常工作。他试图将所有宏放入“ RunAll”宏中(因此,他只需要运行一个宏而不是六个单独的宏),现在其中一个不能正常运行。当他执行RunAll宏时,会收到一个错误,指出单元是受保护的并且是只读的。但是,工作表上没有任何保护,并且如果他单独运行宏,则不会收到错误。

不用说,单独执行良好但不能与其他应用程序一起执行的宏遇到了使它无法正常工作的问题。可能这意味着,与单独运行宏相比,在宏离开工作簿之前运行的宏处于不同的状态。

例如,如果行为异常的宏是要运行的系列中的第三个宏,请检查前两个宏以查看它们在做什么。他们会更改所选单元格吗?他们会更改活动的工作表吗?它们会改变第三个宏所期望的任何条件吗?任何这些都可能导致第三个宏无法正常运行。

关于活动工作表的第二个建议是最可能的情况。单独运行宏时,很有可能在特定工作表处于活动状态时运行宏。但是,其他宏可能会将活动工作表更改为其他工作表,并且该不同的工作表可能是对其应用了保护的工作表。

解决方案是检查每个宏,以确保它保存了位置信息(工作表,活动单元格,选定的单元格等)

在对其中任何一个进行任何更改之前。保存它们后,很容易在宏末尾还原它们。

如果仍然不能执行此操作,则可能需要进行一些调试。在“ RunAll”宏中,使用VBA编辑器在调用失败宏的行上建立一个断点。然后,您可以使用“逐步进入”

命令进入宏并检查发生故障的位置。请特别注意宏要更改的工作表和单元格,然后查看是否可以弄清楚早期的宏导致了该工作表和单元格的情况。您可以在立即窗口中使用以下任一行来查看您的位置:

? ActiveSheet.Name ? ActiveCell.Address

虽然跟踪这些类型的错误可能是一个挑战,但隧道尽头的亮点是,您最终将获得功能完善的“ RunAll”宏,可以节省大量时间。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12710)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。