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

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

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

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

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

A 回答 (4件)

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

    • good
    • 0

他の人も書いていましたが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

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

この回答への補足

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
    • good
    • 0
この回答へのお礼

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

Private Sub UserForm_Activate()
~略~
End Sub

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

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

お礼日時:2002/11/15 11:34

MsgBox関数で出力されるメッセージボックスはシステムが管理しており、


メッセージ出力後の処理の継続には必ずボタンが必要です。
なので、ボタンを出さずにタイマーで消す、
などというカスタマイズはできません。

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

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

こんにちは



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

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

では
    • good
    • 0
この回答へのお礼

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

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

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

お礼日時:2002/11/14 15:29

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