• ベストアンサー

時間がたつと自動的に消えるメッセージが消えない

Excelのマクロで時間がたつと自動的に消えるメッセージを出すようにしていたのですが、Excel2003では正常に動作していたものが、Excel2010ではOKボタンをクリックしないと消えなくなってしまいました。マクロは下記の通りです。どうしたらExcel2010でも時間がたったら消えるようになるでしょうか?御存じの方がおられましたら教えてください。よろしくお願いいたします。 WSH01.Popup MSG, 1, "すぐ消えるMsgbox", vbInformation

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

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

こんにちは。 コードを試してみましたが、消えたり消えなかったりです。 もともと、2003でも、「Popup,Msg 1」の秒数は、不安定でしたね。 あまり良い方法とは言えませんが、Win32 APIを使う方法があります。 '// Private 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 Sub Test2()  MessageBoxTimeoutA 0&, "このまま触る必要ありません。", "自動的に閉じる", vbMsgBoxSetForeground, 0, 1000 '1000は、1秒のこと End Sub

isojiro
質問者

お礼

ありがとうございます。やってみたら上手くいきました。助かりました。マクロ初心者なので、Win32 API(?)の事は知りませんでしたが、これから徐々に勉強していこうと思います。ありがとうございました。

関連するQ&A

  • VBA 確認メッセージを非表示で保存

    VBA初心者です。 素人質問ですが、どうぞよろしくお願いいたします。 BOOK1のSheet1にwebクエリが設定されています。 Sheet1にはコマンドボタンが二つあり、 CommandButtun1にはクエリを更新するマクロ。 CommandButtun2にはクエリを更新してブックを閉じるマクロがあります。 コマンドボタン2をクリックすると、Webクエリを更新して、 ブックをメッセージなしで上書き保存したいのですが、 下記のマクロではうまく動作しません。 クエリ更新のあとの、ブック保存、クローズするマクロが動作しない状況です。 CommandButtun1のWSH.Popupが原因のようですが、 何か回避方法がありましたら、ご教授いただけませんか? CommandButtun1には下記のマクロ Private Sub CommandButton1_Click() '独自のエラーメッセージを表示する(On Errorステートメント) On Error GoTo Err_Msg 'webクエリ更新 Range("H6").Select Selection.QueryTable.Refresh BackgroundQuery:=False 中略 Exit Sub 'エラーメッセージの指定 Err_Msg: Dim WSH As Object Set WSH = CreateObject("Wscript.Shell") WSH.Popup "完了しました。", 3, "自動的に閉じます", vbYesNo + vbInformation Set WSH = Nothing End End Sub ------------------------------------------------------------------------- CommandButtun2には下記のマクロ Private Sub CommandButton2_Click() CommandButton1.Value = True If ThisWorkbook.Saved = False Then ThisWorkbook.Save End If ActiveWorkbook.Close End Sub

  • マクロ、メッセージ表示ボタンで質問です。

    よろしくお願いします。 マクロでボタンを押すとメッセージを表示させたいのですが、 Sub 表示条件() MsgBox "表示条件 (1)__ (2)__", vbInformation End Sub と、していますが、この(1)、(2)を改行して表示させることは 可能でしょうか? マクロ初心者です。 よろしくお願いいたします。

  • Excel 2010 VBA の変な異常終了

    Excel VBA で 今まで いろんなマクロを作ってきましたが、今回 新しく購入したパソコン(Windows 7  Excel2010  本体メモリー8GB) で繰り返しのあるマクロを作成しましたが、3回目でピーと音がして エラーメッセージを出さずに異常終了する変なエラーが発生しました。 そこで Msgbox で 2回ごとに 確認メッセージで中断するようにすると、 正常に動作します。 また このマクロを 別のパソコン(Windows XP Excel 2003)用に 拡張子 XLS に 変換して実行すると、Msgbox で 中断しなくても、正常に動きます。 Windows7 Excel2010 のパソコンでは これとは別のマクロでも、同じような 変に異常終了するエラーを数回経験しています。 どうも少し長いマクロや、繰り返しの数回目で発生したりするようです。 教えてGoo の質問には Excel 2003で作成したマクロがExcel 2010で エラーになる質問が多くありますが、今回のエラーは、Excel2010 で作成した マクロであり、Msgbox で 2回ごとに 中断すれば、Excel2010 でも正常に 動く事からも Excel 2003 との関係ではないようです。 2010になってパソコンの処理速度にVBA処理が間に合っていないでは? と思われるので、 Wait命令を入れて5秒ほど待つようにしてもダメです。 また Windows7 になって 標準本体メモリー4GBでは Excel2010 の マクロには不足かと思い8GB に追加しましたがこれもダメでした。 最新のパソコンのスピードにExcelマクロが追い付いていないのか? マクロ処理用の 計算領域が不足(本体メモリーとは関係なく)? のような気がします。 現在は Msgbox で中断することで対応していますが、実際の繰返回数 は非常に多く何回も OKボタン を押す必要があり。困っています。 Excel 2010 になって同じようなエラー事例があるのではないでしょうか? 対応法があれば是非教えてください。 (エラー確認用に、マクロ、関係サンプルデータが必要であれば添付します)

  • ウィンドウズの操作を自動化するには

     エクセル等にはVBAやマクロのように、自分の行った動作を記録して、さらにその内容を改善して自分に適した動作を再現できますが、ウィンドウズそのものには、そういったものはないのでしょうか。  windows3.1時代には、レコーダーなるものがありましたがwindows me には無いみたいですね。 でもこのレコーダーを使用してるときは、他のことはできないので少し不便でしたけど。  wshというのがあるのは判ったのですが、エクセルみたいにマクロを自動的に記述してくれるものを探してます。

  • メッセージBOXの「はい」「いいえ」の処理について

    お世話になっております。 エクセルマクロで処理を行うときに メッセージBOXにて「はい」か「いいえ」のボタンを押して 実行か中断の処理を行なっていたいのですが、 「いいえ」を押しても処理が実行されてしまいます。 以下で作成しております。 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub IP呼び出し() Dim keizoku As Integer Dim rc As Long rc = MsgBox("処理を続けますか?", vbYesNo + vbQuestion) If rc = vbYes Then MsgBox "処理を続けます", vbInformation Else MsgBox "処理を中止します", vbCritical End If Dim Wsh, wExec, cmd, rRes, i, j Dim sBuf() As String Set Wsh = CreateObject("WScript.Shell") For i = 2 To Cells(Rows.Count, 3).End(xlUp).Row Set wExec = Wsh.exec("%ComSpec% /c nslookup " & Cells(i, 3)) Do While wExec.Status = 0 DoEvents Loop Sleep 1 rRes = wExec.StdOut.ReadAll 'MsgBox rRes sBuf = Split(rRes, vbCrLf) For j = 0 To UBound(sBuf) If Left(sBuf(j), 5) = "Name:" Or Left(sBuf(j), 3) = "名前:" Then Cells(i, 18) = Trim(Right(sBuf(j), Len(sBuf(j)) - 5)) End If Next j Next i MsgBox "ドメインを確認して下さい。", vbOKOnly, "マクロが終了しました" End Sub Excel2010で行なっております。 ご教授の程、よろしくお願いいたします。

  • マクロで自動保存を無効にしたい

    Excel2007を使っています。 [Officeボタン]⇒[Excelのオプション]⇒[保存]⇒[自動保存の例外]で [このブックの自動保存を行わない]にチェックを入れると、 開いているブックに限り、自動保存されなくなると思います。 この動作をマクロで行いたいと思っております。 イメージとしては、ファイルを起動したタイミングで、 ブックの自動保存を無効にしたいと思っております。 どのようにプログラムしたら良いかご存知でしたら、 教えて頂けませんか? ぜひよろしくお願い致します。

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

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

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

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

  • エクセル・名前を付けて保存するマクロ 不要な文字を消す方法

    お世話になります。 エクセルで「名前をつけて保存」のマクロを作って使用していますが、 一部、改造したいところがあります。 B20セルの文字が自動でファイル名になるようにしています。 「件名:●×商店納品見積書_20090125_1326」という感じなのですが、 最初の「件名:」という文字が不要で、毎回手動で消しています。 しかし、この文字を最初から消しておくわけにはいかず、 マクロ実行時のみ「件名:」が消えるようにしたいのです。 よい方法はありますか? どうぞよろしくお願いします。 Sub ブック保存() Dim SaveFileName As String, re As Variant, WSH As Variant, Path As String Set WSH = CreateObject("WScript.Shell") Path = WSH.SpecialFolders("Desktop") & "\" With Sheets("見積書").Range("B20") If .Value = "" Then MsgBox "店舗名が入力されていません", vbExclamation Exit Sub Else SaveFileName = Path & .Value & "_" & Format(Now, "yyyymmdd_hhmm") End If End With Set WSH = Nothing re = Application.GetSaveAsFilename(SaveFileName) If re = False Then MsgBox "保存中止", vbExclamation Else ActiveWorkbook.SaveAs SaveFileName MsgBox "保存OK", vbInformation End If End Sub

  • EXCELのマクロで忠告文について。

    EXCELのユーザーフォームについて質問です。 マクロで処理時間が少し長いコードがあります。 ユーザーフォームでデータを入力してCommandButton1を押すとそのマクロが動く仕組みです。 処理時間が少し長いので 「ただいま、処理中です。 しばらくお待ちください」 といった忠告文を出したいです。 msgboxのようにOKボタンを押さずに、処理が終了したら忠告文が自動で消えるようにしたいです。 どのようにすればできますか? よろしくお願いします。

専門家に質問してみよう