掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Win 7でのMsgBox関数(VBA) (ID:102607)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
サウンドについては、以前のバージョンから鳴る環境と鳴らない環境がありましたが、 それが OS 依存なのか Office バージョン依存なのかは調べていません。 かつては、Excel / Word / Access 間でも差異がありましたね。 > これは何か明確な理由があるのでしょうか。 私は情報を持ち合わせていません。どうなのでしょうね。 何らかの要因があって鳴らないのか、意図的にそのように変更したのか。。。 鳴らない方が嬉しいという意見もあるようですけれど。 http://officetanaka.net/excel/excel2010/021.htm > 内部の呼び出しはMessageBoxAのはずなのに Excel はどうだか分かりませんが、少なくとも過去の Access はそうではありませんでした。 2000 を境に仕様が変更されてはいますが、今でも Eval 経由で MsgBox を呼び出すと、 Access では OS 標準と異なるメッセージボックスが表示されます。 > # MsgBox関数の直前にMessageBeep APIを呼び出す関数を作れば済む話ではありますが。 作ってみました。関数名は意図的に MsgBox のままにしています。Office 2010 では未検証。 VB4 や Office 97 あたりで使う場合は、「As 列挙型」→「As Variant」の方が良いかも。 Option Explicit 'Vista 環境では KB951119 適用推奨 #If Win64 Then Declare PtrSafe Sub MessageBeep Lib "User32" (ByVal uType As Long) #Else Declare Sub MessageBeep Lib "User32" (ByVal uType As Long) #End If Public Function MsgBox(Prompt As Variant, _ Optional Buttons As VbMsgBoxStyle = vbOKOnly, _ Optional Title As Variant, _ Optional HelpFile As Variant, _ Optional Context As Variant) As VbMsgBoxResult Dim uType As Long uType = CLng(Buttons And &HF0) Select Case uType Case vbCritical, vbQuestion, vbExclamation, vbInformation MessageBeep uType Case Else MessageBeep 0& End Select If IsMissing(HelpFile) Or IsMissing(Context) Then MsgBox = VBA.Interaction.MsgBox(Prompt, Buttons, Title) Else MsgBox = VBA.Interaction.MsgBox(Prompt, Buttons, Title, HelpFile, Context) End If End Function
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.