【问题标题】:How to prevent VBA macro from stopping when opening other workbooks with runtime errors?如何防止 VBA 宏在打开其他有运行时错误的工作簿时停止?
【发布时间】:2016-03-05 12:56:19
【问题描述】:

我的宏遍历一个范围并打开其中的所有超链接,看起来像这样:

For Each xhyperlink In WorkRng.Hyperlinks
   xhyperlink.Follow
Next

现在,一些超链接是 excel 文件。在极少数情况下,正在打开的 Excel 文件之一在其中包含一些运行时错误 - 当文件打开时,此错误会跳转,并阻止我的宏运行。我怎样才能防止这样的事情发生?我尝试同时使用 “On error resume next”和“on error goto X”,但这不会阻止消息的出现。 任何想法如何解决这个问题?太感谢了!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    在宏的开头添加:

    Application.DisplayAlerts = False
    

    然后在最后添加

    Application.DisplayAlerts = True
    

    【讨论】:

    • Application.EnableEvents = False 也可能是个好主意——除非 OP 想要在他们打开的文件中运行代码
    • 这看起来像是答案,但它产生了一个新问题 - 我的代码还使用以下代码为每个打开的超链接着色:rng1 = xhyperlink.Range.Address, Range(rng1).Interior.ColorIndex = 6. 现在,不是用超链接为单元格着色,而是为新打开的 excel 文件中的单元格着色。知道如何防止这种情况吗?
    • 在使用那段代码之前可能需要重新选择原始工作簿。 Workbook.Activate。或者您可以在激活超链接之前运行该代码。
    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 2015-10-15
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    相关资源
    最近更新 更多