こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

エクセル95およびエクセル97を使用しています。

エクセルVBAでメッセージを表示する場合、通常は、

Sub メッセージ()
MsgBox "~メッセージ本文~", vbOKOnly + vbinformatoin, "メッセージタイトル"
End Sub

のように書くと思います。他にも、vbOKCancel、 vbYesNo などもあります。
しかしこれらはいづれにせよ、ユーザーがメッセージに表示された「はい」や「いいえ」をクリックしないと先に進みません。、このメッセージから「はい」「いいえ」等の表示を無くし、メッセージを何秒か表示したら、あとは自動的に消えるようにするにはどうすればいいのでしょうか?

投稿日時 - 2002-11-14 14:46:53

QNo.404491

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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

投稿日時 - 2002-11-21 18:50:03

ANo.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

こんな感じでは駄目でしょうか?

投稿日時 - 2002-11-14 18:58:01

補足

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

とすれば働くのですが、いかんせんテキストボックスなものですから・・・・。

投稿日時 - 2002-11-17 01:17:29

お礼

ありがとうございます。これでエクセル97と2000については解決しました。
ただ、ユーザーフォームの無いエクセル95については出来ません。
Dialogsheetが代りだと思うのですが、95の場合、標準モジュールしかないので

Private Sub UserForm_Activate()
~略~
End Sub

の部分を標準モジュールにどう書けばいいのか教えてくださいませんでしょうか?

呼び出す方はこれでいいと思うのですが。
Sub Macro1()
  Dialogsheets("Dialog1").Show
End Sub

投稿日時 - 2002-11-15 11:34:47

ANo.2

MsgBox関数で出力されるメッセージボックスはシステムが管理しており、
メッセージ出力後の処理の継続には必ずボタンが必要です。
なので、ボタンを出さずにタイマーで消す、
などというカスタマイズはできません。

VBAでなく、VBならこの場合は、
メッセージを表示するだけのフォームを作成し、
そのフォームのLoadとUnloadをメインフォームから
タイマーでコントロールする、という方法を取ると思います。

VBAだと・・・他の方にお任せしたいと・・・(苦笑)

投稿日時 - 2002-11-14 15:52:52

ANo.1

こんにちは

メッセージボックスでないといけませんか?

ラベルにメッセージを表示しタイムウェイトした後に
スペースを送ってメッセージを消す。
という簡単な方法がありますが。。。

では

投稿日時 - 2002-11-14 15:10:08

お礼

すみません、不勉強で「スペースを送る」という意味がわからないのです。
テキストボックスにメッセージを書いて、
Sub 表示()
~略~("テキストボックス名").Visible = True
Application.OnTime Now + TimeValue("00:00:05"),"非表示"
End Sub

Sub 非表示()
~略~ ("テキストボックス名").Visible = False
End Sub

と二つのマクロを書き、やろうかとも思いました。そういうことでしょうか?
出来ればメッセージボックスを利用したいのです。メッセージアイコンも使いたいですし。すみません。

投稿日時 - 2002-11-14 15:29:17

あなたにオススメの質問