もし、デバック時の確認・タイミング取りだけなら、
MsgBox の かわりに InputBox を 使うと音が出ないと思います。
Sub test() Dim a As String Dim b As Integer a = "文字列変数" b = 1024 InputBox "a=" & a 'インチキしてInputboxで表示 InputBox "b=" & b '当然値は受け取らない、これで音は鳴らないと思います。 End Sub
Yes,No の 受け取りだったらスミマセン。
「vbQuestion」でアイコンを表示させると、音が小さくなります。
●Excel VBA を使ってみよう : Excel VBA の ノウハウ 満載
>メッセージボックス(関数:MsgBox) その3
MsgBox(strMsg, vbYesNo + vbQuestion, "MsgBox")
MsgBoxはBeepではなくWindowsのサウンドを呼び出します。
(以下をテストする際には、直前の音が鳴り止ぬまで待ってからクリックするようにしてください。鳴り止まぬうちに連続してクリックすると音が再生されない場合があります。)
' DING.WAV 一般の警告音 利用
MsgBox "test1", vbYesNo
' CHORD.WAV システムエラー 利用
MsgBox "test2", vbYesNo + vbApplicationModal
MsgBox "test3", vbYesNo + vbQuestion
MsgBox "test4", vbYesNo + vbExclamation
MsgBox "test5", vbYesNo + vbCritical
対応としては
(1)VBAからサウンドコントロールを操作して「一般の警告音」を「なし」にする(参考URL見つけられず)
(2)VBAからボリュームコントロールを操作して音量を下げる方法(下記参照)
http://support.microsoft.com/kb/118377/ja
(3)MsgBoxの利用をやめて自分でフォームを作り、呼び出す(下記参照)
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_080.html
(4)InputBoxを使う(回答1で紹介されている方法ですね)
(5)手動でサウンドコントロールの「一般の警告音」を「なし」にする
(6)手動でスピーカをOFF
などになります。一時的であるなら(5)か(6)になるかと思います。
ユーザーフォームで、(鳴らない専用の)メッセージボックスを作ってみてはいかがでしょう。
コメント(7件)
たぶん、ボリュームを オフにしただけでは 消えない。
>ボリュームを オフにしただけでは 消えない。
消えますよ。
何か勘違いしておられるようですが、あれはBEEP音じゃなくてWindowsサウンドコントロールで指定してあるサウンドです。
BEEP音はデバイスを外す方法しか知りません。
http://d.hatena.ne.jp/haradago/20080110
http://matsu.tymy.net/blog/2009/06/01/windows%E3%81%A7%E3%83%93%E3%83%BC%E3%83%97%E9%9F%B3%E3%82%92%E6%B6%88%E3%81%99%E6%96%B9%E6%B3%95/
ま、エクセルからそれを やれば 消せるけどねってこと。
できないことは ない。
質問文ではBEEPと書いておられますがMsgBoxが利用するのはBEEPではありません。
BEEPに関しての話題に摩り替えようとするのはおやめください。
パソコンで音楽 聴きながら BEEP音だけ消したいというなら、ボリュームは調整できない。