プロが教えるわが家の防犯対策術!

EXCELの1つのブックに2つのマクロを組んでいます。

普段は1つ目のマクロを実行したあと、処理結果を確認してから
2つ目のマクロを動かしています。

※1つ目のマクロ終了時に、完了のメッセージボックスが出ます。



この2つのマクロを、自動で処理するためのマクロを
作ろうとしていて、

1.1つ目のマクロを実行
2.処理完了のメッセージボックスのOKをクリック
3.2つ目のマクロを実行

という流れで処理しようと思っています。


今、メッセージボックスのOKボタンをVBAでクリックする方法がわからなくて
調べているのですが、お分かりになる方いらっしゃいましたら
教えていただけませんでしょうか。



例えば、1つフラグを作って、そのフラグが立っている時は
メッセージボックスを出さないような制御は出来るのですが、
今回は、メッセージボックスをクリックする方法が
知りたいと思っています。


よろしくお願いいたします。

A 回答 (5件)

無理です


MsgBox自体がモーダルで表示されるので MsgBoxからExcelへ処理が戻ってこない限りExcelからの制御が不能になります

フラグを作って MsgBoxの表示、非表示を切り替えるほうが現実的です
    • good
    • 5
この回答へのお礼

やはり制御できないんですね。
フラグでやるか検討してみます。
ありがとうございましたm(__)m

お礼日時:2008/10/12 15:31

下記のようにしてみてはいかがでしょう



Sub Macro1() ' マクロ1
  Macro1Auto
End Sub

' マクロ1の実行内容をこちらへ移す
Sub Macro1Auto( optional flag as Boolean = false )
' 1つめのマクロ
' メッセージボックスをフラグで制御
if flag = false then
  MsgBox "確認メッセージ"
end if
End Sub

' 自動でやる場合は TrueをセットしてMacro1Autoをコール
Sub CallMAcro1Auto()
  Macro1Auto True
End Sub
    • good
    • 8

小生も質問を一読して、#3のご指摘と同じ感想を持ちました。


自動でプログラムでOKにするなら、MsgBoxのコードを,その入れなければよいのでは。
利用者に知らせるだけなら他の表示だけのコントロールもあり、表示が見る人にうるさければ、一定時間で消えるとかの方に頭が行くような気がします。
結局、質問の真意が説明(表現)できてないのでは。
    • good
    • 0

diashunです。


質問者さんの意図がいま一つ理解できないのですが・・・。
そもそもMsgboxはある処理の結果がOKかNGかをオペレータに判断させるためのもので、これをプロシージャ内でOK(クリック?)とさせることに意味があるのでしょうか?常にOKと判断するなら、そのMsgboxを表示する意味はないのではないでしょうか?
#2のn-junの参考URLのWSH(ウィンドウズスクリプティングホスト)を使えば、一定時間後にMsgboxを自動で閉じることも確かにできますが、わざわざMsgboxを表示する意味はないと思います。
    • good
    • 1
この回答へのお礼

意図が不明ですみませんでした。

チェックしなくてもいいケースと、しないといけないケースがあって
チェックしなくてもいいケースの場合は、
スケジュールを組んでBATのように自動で全て動かしたいと思っていました。

わざわざメッセージボックスがないPGを分けて作るのも管理しにくく
なりますし、と思っていましたが
フラグを追加してBAT処理の場合はメッセージボックスを表示しない方が
良さそうですね。

ありがとうございました。

お礼日時:2008/10/12 15:42

自動的に閉じるMsgBox


http://officetanaka.net/excel/vba/tips/tips21.htm

こう言った感じのことでしょうか。
    • good
    • 3
この回答へのお礼

こういう方法もあるんですね。
ただ、普段は1つずつチェックしながら実行しているので
自動的に閉じてしまうのも困るんです。

でも参考になりました。
ありがとうございますm(__)m

お礼日時:2008/10/12 15:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A