• 締切済み

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

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

みんなの回答

回答No.4

すみません、excel95は触った事がないのと、Dialogsheetsを使った事がないので私には解りかねます。

回答No.3

他の人も書いていましたがmsgboxでないと駄目ですか?(^^; とりあえずFormを使って同じ機能の物でしたら書いてみたので参考までに... 標準モジュールとフォームを作成。 それぞれをUserForm1とModule1とする。 フォームのオブジェクトに表示したいメッセージを書く。 UserForm1のコードに Private Sub UserForm_Activate()   t=Timer   Do While Timer < t + 1 '1は秒数です。10にすれば10秒です。     DoEvents   Loop   Unload Me End Sub Module1のコードに Sub Macro1()   UserForm1.Show End Sub こんな感じでは駄目でしょうか?

moooon
質問者

お礼

ありがとうございます。これでエクセル97と2000については解決しました。 ただ、ユーザーフォームの無いエクセル95については出来ません。 Dialogsheetが代りだと思うのですが、95の場合、標準モジュールしかないので Private Sub UserForm_Activate() ~略~ End Sub の部分を標準モジュールにどう書けばいいのか教えてくださいませんでしょうか? 呼び出す方はこれでいいと思うのですが。 Sub Macro1()   Dialogsheets("Dialog1").Show End Sub

moooon
質問者

補足

Sub Macro1() DialogSheets("dialog1").Show t = Timer Do While Timer < t + 1 '1は秒数です。10にすれば10秒です。 DoEvents Loop DialogSheets("dialog1").Hide End Sub とやったのですが、ダイアローグシートのOKまたはきゃんせるボタンを押さないとさきにすすみません。 ダイアローグシートのかわりにテキストボックスを使って、 Sub Macro2() Sheets("sheet1").DrawingObjects("テキスト 1").Visible = True t = Timer Do While Timer < t + 1 '1は秒数です。10にすれば10秒です。 DoEvents Loop Sheets("sheet1").DrawingObjects("テキスト 1").Visible = False End Sub とすれば働くのですが、いかんせんテキストボックスなものですから・・・・。

  • kagep
  • ベストアンサー率23% (171/721)
回答No.2

MsgBox関数で出力されるメッセージボックスはシステムが管理しており、 メッセージ出力後の処理の継続には必ずボタンが必要です。 なので、ボタンを出さずにタイマーで消す、 などというカスタマイズはできません。 VBAでなく、VBならこの場合は、 メッセージを表示するだけのフォームを作成し、 そのフォームのLoadとUnloadをメインフォームから タイマーでコントロールする、という方法を取ると思います。 VBAだと・・・他の方にお任せしたいと・・・(苦笑)

回答No.1

こんにちは メッセージボックスでないといけませんか? ラベルにメッセージを表示しタイムウェイトした後に スペースを送ってメッセージを消す。 という簡単な方法がありますが。。。 では

moooon
質問者

お礼

すみません、不勉強で「スペースを送る」という意味がわからないのです。 テキストボックスにメッセージを書いて、 Sub 表示() ~略~("テキストボックス名").Visible = True Application.OnTime Now + TimeValue("00:00:05"),"非表示" End Sub Sub 非表示() ~略~ ("テキストボックス名").Visible = False End Sub と二つのマクロを書き、やろうかとも思いました。そういうことでしょうか? 出来ればメッセージボックスを利用したいのです。メッセージアイコンも使いたいですし。すみません。

関連するQ&A