ここから本文です

excel vbaで、ユーザーフォームの画面を更新してから音を鳴らしたい Userフォー...

yum********さん

2016/8/421:33:41

excel vbaで、ユーザーフォームの画面を更新してから音を鳴らしたい

Userフォーム上のラベルやテキストボックス等に文字列を表示してから音を鳴らしたいと考えています。

音を鳴らすのは
PlaySound ActiveWorkbook.Path & "\sound\complete.wav", 0, 0
のようにしております。

コードの書き順はもちろん[ユーザーフォーム上に文字列を表示]⇒[音を鳴らす]の順で書いているのですが、音がなった後にユーザーフォームの画面が更新されて文字列が表示されてしまいます。

Application.ScreenUpdating = False
のコードを書いて画面描画をとめているわけでもありません。

どのように対処すればよろしいでしょうか。

閲覧数:
102
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

kak********さん

2016/8/422:19:54

音が鳴る前に、イベントを処理させればよいでしょう。

[ユーザーフォーム上に文字列を表示]する処理
DoEvents
PlaySound ActiveWorkbook.Path & "\sound\complete.wav", 0, 0

質問した人からのコメント

2016/8/5 13:31:00

DoEvents関数ですね。この一文を入れただけで理想どおりのしょりができました。
ありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

2016/8/506:51:23

Private Sub CommandButton1_Click()
TextBox1.Text = Time
DoEvents
PlaySound ActiveWorkbook.Path & "\sound\complete.wav", 0, 1
End Sub

というようにDoEventを入れても感覚的には「ほぼ同時」に感じるかもしれません。


もうひとつの方法として、
MouseDownイベントでラベルやテキストボックスに文字列を表示して、MouseUpイベントで音を鳴らす、というやり方もあります。

Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = 1 Then
TextBox1.Text = Time
DoEvents
End If
End Sub

Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = 1 Then
PlaySound ActiveWorkbook.Path & "\sound\complete.wav", 0, 1
End If
End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる