• ベストアンサー

エクセルマクロ 自動でMSGボックスを閉じてクリッ

エクセル2010を使っています。 Sub ボタン2 をクリックし、処理が終わったときに、メッセージボックスを出しているのですが、それを数秒後に自動で閉じた後、自動でボタン1をクリックさせたいのですが。 ご存知の方よろしくお願いいたします。 MsgBox "抜き出し終了 "

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1さんの方法で昔は閉じてくれたような記憶があります。 Excel2010 & Win7(64bit)だと閉じませんね。 もっともループ中などではWscript.POPUP は思ったように 動いてくれません。 すべてのループが終わってから現れたりします ((+_+)) なので別案。 標準モジュールに Public Declare Function MessageBoxTimeoutA Lib "user32" _ (ByVal hWnd As Long, _ ByVal lpText As String, _ ByVal lpCaption As String, _ ByVal uType As Long, _ ByVal wLanguageId As Long, _ ByVal dwMilliseconds As Long) As Long として コマンドボタンの方には Private Sub CommandButton1_Click() With Application MessageBoxTimeoutA .hWnd, "5秒後にサヨナラ。", .Name, vbOKOnly, 0&, 5000& End With Call ボタン1_Click End Sub などとしてみてください。 5000& がミリセカンド単位での秒数指定です。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#203218
noname#203218
回答No.1

下記はボタン2クリックでMSGBOXを3秒表示後Sub ボタン1_Click()を呼び出しますVBAの一例です。 Sub ボタン2_Click() Dim WSH As Object Set WSH = CreateObject("WScript.Shell") WSH.Popup "抜き出し終了", 3, "Title", vbInformation Set WSH = Nothing Call ボタン1_Click End Sub Sub ボタン1_Click() MsgBox "終了" End Sub

gekikaraou
質問者

補足

駄目ですね。 メッセージボックスが自動で閉じません。 ちなみにCall ボタン1_Clickのみだと 動きますね。 自動で閉じるはあっちこっちのサイトで見て試してるのですが、どれもボックスの表示はするのですが、自動で閉じてくれません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのマクロでゲームを作成したいのですが

    タイトルの通りです office2002ですが visual vasic editorに入力しています。 Sub quiz1() MsgBox "[OK]ボタンを押すと、なぞなぞが始まります" MsgBox "自分が動物だと言っているような飲み物は?" MsgBox "サイダー" MsgBox "話をすることの大好きな道具は?" MsgBox "シャベル" MsgBox "やぶれば、やぶるほど、ほめられるものは?" MsgBox "記録" End Sub と入力しましたが メッセージボックスのタイトル部分が Microsoft Excelとなっていますが 例えば "問題1"とかに変えたいのですが  どうすればいいのでしょうか お願いします

  • VBScriptでMsgBoxのYesNoボックスを自動的にクリックしたい

    VBScriptであるボタンをクリックして表示された、MsgBoxの表示されたYes Noボックスを自動的にクリックしたいと考えています。 下記のように、VBScriptでボタンやコンボボックスを選んだりクリックした後にMsgBoxで”はい”、”いいえ”が表示されて、その表示されたMsgBoxで”はい”をクリックしたいのですが、コマンドが分からず困っています。 IEオブジェクト.Document.フォーム名.コンボボックス名.selectedIndex = 0からの番号

  • マクロに関して(ソフトのトラブル?)

    エクセルのマクロでWorkSheetの所に Private Sub Auto_Open() MsgBox "test" End Sub と入力し、保存した後に開いてもメッセージボックスが現れません。 簡単すぎるほどのマクロですし、イベントがコマンドボタンとかなら動作するのでソフトがおかしいのでしょうか?

  • メッセージボックスのOKボタンをVBAでクリックさせたい

    EXCELの1つのブックに2つのマクロを組んでいます。 普段は1つ目のマクロを実行したあと、処理結果を確認してから 2つ目のマクロを動かしています。 ※1つ目のマクロ終了時に、完了のメッセージボックスが出ます。 この2つのマクロを、自動で処理するためのマクロを 作ろうとしていて、 1.1つ目のマクロを実行 2.処理完了のメッセージボックスのOKをクリック 3.2つ目のマクロを実行 という流れで処理しようと思っています。 今、メッセージボックスのOKボタンをVBAでクリックする方法がわからなくて 調べているのですが、お分かりになる方いらっしゃいましたら 教えていただけませんでしょうか。 例えば、1つフラグを作って、そのフラグが立っている時は メッセージボックスを出さないような制御は出来るのですが、 今回は、メッセージボックスをクリックする方法が 知りたいと思っています。 よろしくお願いいたします。

  • エクセル/マクロ エラー処理がうまくいきません

    エクセルマクロの質問です。エクセルのヴァージョンは2000です。 シートをコピーして新シートに任意の名前を付けるマクロを作っています。 ユーザーフォームの中に一つのテキストボックス(新シートの名前入力用)と 二つのコマンドボタンを設置し一つは実行ボタン、もう一つはキャンセルボタンとしました。 テキストボックスに不正な名前(空白、記号、すでに存在するシート名)が入力された状態で 実行ボタンを押すと新シートは作成されず、メッセージボックスで実行できない旨が表示され、 入力フォームに戻るという感じにしようと思っています。 エラー処理には下記の通りOn Errorステートメントを試してみました。が、どうもうまくいきません。 エラーが出ても新しいシートが作成されてしまい、その後にメッセージボックスが出てしまいます。 正しいエラー処理の仕方をご教示頂けると幸いです。どうぞよろしくお願いします。 Private Sub CommandButton1_Click() Dim NewSheetName As String NewSheetName = TextBox1.Value On Error GoTo Err1 Sheets("Summary").Select Sheets("Summary").Copy After:=Sheets("Summary") ActiveSheet.Name = NewSheetName Exit Sub Err1: MsgBox "Invalid name"    Exit Sub End Sub

  • エクセルVBAで「はい」「いいえ」のないメッセージを表示する方法

    エクセル95およびエクセル97を使用しています。 エクセルVBAでメッセージを表示する場合、通常は、 Sub メッセージ() MsgBox "~メッセージ本文~", vbOKOnly + vbinformatoin, "メッセージタイトル" End Sub のように書くと思います。他にも、vbOKCancel、 vbYesNo などもあります。 しかしこれらはいづれにせよ、ユーザーがメッセージに表示された「はい」や「いいえ」をクリックしないと先に進みません。、このメッセージから「はい」「いいえ」等の表示を無くし、メッセージを何秒か表示したら、あとは自動的に消えるようにするにはどうすればいいのでしょうか?

  • エクセルVBA

    ユーザーフォームがあり、コマンドボタンが準備されています そのコマンドボタンをクリックした場合、処理1~処理3を実行するようにしています Sub CommandButton1_Click() CommandButton1処理1 CommandButton1処理2 CommandButton1処理3 End Sub Private Sub CommandButton1処理1() ・・・ End Sub Private Sub CommandButton1処理2() ・・・ End Sub Private Sub CommandButton1処理3() ・・・ End Sub 処理1→処理2→処理3という流れが進むかと思います 処理1の中にIf~End ifがあり、Ifに合致する場合はメッセージボックスが表示するようになっています 処理3の中に、「ユーザーフォームを閉じる」記載がされています 処理1のIfに合致する場合、メッセージボックスを表示させユーザーフォームを閉じることなく終了したいです つまりIfに合致した場合、その後の処理2、処理3をさせず処理1で終了させればいいのかと思ったのですが、そのようなことはできるのでしょうか? 処理1でIfに合致する場合、Exit Subとすると処理1は終了するかもしれませんが、その後処理2、処理3に進んでしまうので困っています よろしくお願いします

  • エクセルVBAでフォームのボタンとコントロールツールボックスのコマンドボタン

    エクセルVBAでフォームのボタンとコントロールツールボックスのコマンドボタンについて教えてください。 実はこれまでフォームしか使ったことがないのですが、フォームのボタンですと、下記のように一つのプロシージャを多数のボタンから呼び出し、呼び出したボタンにより異なった指示が出来ます。 Sub test() x = Application.Caller Select Case x Case "ボタン 1" MsgBox 1 Case "ボタン 2" MsgBox 2 Case "ボタン 3" MsgBox 3 Case "ボタン 4" MsgBox 4 End Select End Sub コントロールツールボックスは Private Sub CommandButton1_Click() MsgBox 1 End Sub Private Sub CommandButton2_Click() MsgBox 2 End Sub のようにコマンドボタンごとにひとつずつ書くしかないのでしょうか?

  • エクセルマクロ インプットボックスの使い方

    エクセル2013です。 マクロの途中で作業者にマウスで列を選択してもらい その取得した列番号を使って、いろいろ処理を行うマクロを作りました。 Sub 実験() Dim マウス選択 As Range Dim 選択列 Dim 選択月表示 Dim 質問 Dim 最終列 Dim 最終行 最終列 = Cells(8, Columns.Count).End(xlToLeft).Column '8行目の最終列を取得 最終行 = Cells(Rows.Count, 1).End(xlUp).Row 'A列の最終行を取得 On Error GoTo myError Set マウス選択 = Application.InputBox("編集したい月の列を選択してください", Type:=8) 選択列 = マウス選択.Column 選択月表示 = Cells(8, 選択列).Value 質問 = MsgBox("選択した月は " & 選択月表示 & " です。いいですか?", vbYesNo) If 質問 = vbYes Then MsgBox "処理を行います" Else MsgBox "プログラムを中断します" Exit Sub End If ---処理内容---- myError: MsgBox "キャンセルが押されました。プログラム終了します。" End Sub 通常列を選択してくれればインプットボックス内には $V:$V などと表示されますが 行を選択されると $35:$35 などと表示され セルの一部を選択されると $D$40 などと表示されます。 行やセルを選択してもエラーなく最後まで進みますが選択した場所によっては とんでもない結果になってしまいます。 基本、列以外を選択したらメッセージボックスでアラームするか プログラムを停止させたいのですがどのような方法が有りますでしょうか? よろしくお願いします。

  • エクセル/マクロ Exit Subが実行されない

    エクセルマクロの質問です。エクセルのヴァージョンは2000です。 あるシートをコピーして新シートに任意の名前を付けるマクロを作っています。ユーザーフォームの中に一つのテキストボックス(新シートの名前入力用)と二つのコマンドボタンを設置し一つは実行ボタン、もう一つはキャンセルボタンとしました。 QNo.6367227でエラー処理に関する質問をさせていただきましたが、こちらは見事に解決していただきました。 今回の質問はExit Subに関する質問です。 If構文で、条件文1が真であればシートをコピーして名前を変更、フォームを閉じるという処理を目指しています。 If 条件 Then ~ 処理 Exit Sub という形を作って試してみたのですが、処理後にExit Subが実行されません。Exit Subの前にメッセージボックスを挿むとメッセージは表示されましたが、やはりExit Subにはたどり着けませんでした。 すごく初歩的な事で恥ずかしいのですが、Exit Subが実行されない理由と解決法をご教示いただけると助かります。よろしくお願いします。 Private Sub CommandButton1_Click() Dim NewSheetName As String NewSheetName = TextBox1.Value On Error Resume Next Sheets("Summary").Name = NewSheetName If Err.Number = 0 Then Sheets(NewSheetName).Copy before:=Sheets(NewSheetName) ActiveSheet.Name = "Summary" MsgBox ("Task Completed!") ExitSub Else MsgBox "Invalid name!" End If On Error GoTo 0 End Sub

専門家に質問してみよう