我有一个 VBA 子程序,它调用由其他人编写的子程序。偶尔,另一个子会打开一个带有 OK 按钮的 MsgBox。另一个 sub 需要很长时间才能运行,我调用了数百次,所以我希望能够在一夜之间运行它。不幸的是,我想不出一种方法来自动单击 MsgBox 上的 OK。
我努力了
Application.DisplayAlerts = False
但这不会抑制消息框。
有没有办法做到这一点?
谢谢
一种方法是稍微修改原始 sub 的代码。您将需要获得必要的权限...
True
. 这将导致类似于Sub OriginalSubName(
原始参数集的结果, Optional 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
通过作为额外参数输入来修改调用原始 sub 的行。这将导致OriginalSubName
您的参数集, False
。这样,默认情况下您不会抑制对话框,但是当您在子中使用它时会这样做。想知道为什么我使用可选的 Variant 类型参数吗?
If showMessages = True Then
而不仅仅是If showMessages Then
.