gpt4 book ai didi

vba - 从 VBA 中的另一个子程序中抑制 MsgBox

转载 作者:行者123 更新时间:2023-12-01 04:00:43 24 4
gpt4 key购买 nike

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

我试过了

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
  • 保留原 sub 的其余代码不变
  • 通过抛出 False 修改您调用原始 sub 的行作为一个额外的参数。这导致 OriginalSubName您的参数集 , False .这样你就不会默认抑制对话框,但是当你在你的子中使用它时你会这样做。

  • 想知道为什么我使用可选的 Variant 类型参数?
  • 可选部分:这可以防止其他现有子程序在调用修改后的子程序时崩溃
  • Variant 类型部分:可选参数始终为 Variant 类型。这也是为什么你需要使用 If showMessages = True Then而不仅仅是 If showMessages Then .
  • 关于vba - 从 VBA 中的另一个子程序中抑制 MsgBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13635599/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com