5

他の誰かによって作成されたサブを呼び出すVBAサブがあります。時折、他のサブはOKボタンでMsgBoxを開きます。もう1つのサブは実行に時間がかかり、何百回も呼び出しているので、これを一晩実行できるようにしたいと思います。残念ながら、MsgBoxで[OK]をクリックする方法がわかりません。

私が試してみました

Application.DisplayAlerts = False

ただし、これはメッセージボックスを抑制しません。

これを行う方法はありますか?

ありがとう

4

1 に答える 1

2

これを行う1つの方法は、元のサブのコードをわずかに変更することです。必要な権限が必要になります...

  • デフォルト値をに設定して、最後に追加のoptinalパラメーターをスローすることにより、元のサブのヘッダーを変更します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追加のパラメーターとしてスローすることにより、元のサブを呼び出す行を変更します。これにより、OriginalSubNameパラメータのセットが作成されます, False。このように、デフォルトではダイアログボックスを抑制しませんが、サブで使用する場合は抑制します。

オプションのVariantタイプパラメータを使用するのはなぜですか?

  • オプションの部分:これにより、他の既存の潜水艦が変更された潜水艦を呼び出すときにクラッシュするのを防ぎます
  • Variantタイプの部分:オプションのパラメーターは常にVariantタイプです。If showMessages = True Thenだけでなく、を使用する必要があるのもそのためですIf showMessages Then
于 2013-04-17T07:59:56.450 に答える