从VBA中的另一个子例程中抑制MsgBox

我有一个VBA子程序,它调用一个由其他人编写的子程序.偶尔,另一个子打开带有OK按钮的MsgBox.另一个子程序需要很长时间才能运行,我称之为数百次,所以我希望能够在一夜之间运行它.不幸的是,我无法想出一种在MsgBox上自动单击OK的方法.

我试过了

Application.DisplayAlerts = False

但这不会抑制消息框.

有没有办法做到这一点?

谢谢

最佳答案 一种方法是稍微修改原始子的代码.您将需要具备必要的权限…

>通过在结尾处添加额外的optinal参数来修改原始子的标头,将默认值设置为True.这将导致类似Sub OriginalSubName(原始参数集,可选ShowMessages = True)
>在调用msgbox的位置,以这种方式修改代码:

If showMessages = True Then 'The = True part is important here - see below.
showMessages is a Variant type
    'The original statement that calls the msgBox
End If

>保留原始子的其余代码不变
>通过将False作为额外参数抛出来修改调用原始子的行.这导致OriginalSubNameyour参数集,False.这样,默认情况下不会禁止显示对话框,但是在sub中使用它时会执行此操作.

不知道为什么我使用可选的Variant类型参数?

>可选部分:这可以防止其他现有的潜艇在调用修改后的潜艇时发生崩溃
> Variant类型部分:可选参数始终为Variant类型.这也是为什么你需要使用If showMessages = True然后而不仅仅是如果showMessages那么.

点赞