VBA:メッセージボックスを最前面に表示させる方法
その場合VBAのメッセージ(MsgBox)では最前面に表示されないので、処理が終了しても気が付かない場合があります。
他の作業をしていても完了の通知が分かるように、Win32APIを使うとメッセージを最前面に表示できるので、その方法を説明します。
◆メッセージボックスを最前面に表示させる方法
以下を実行すると、ブラウザなどでネットを見ていたり、メールチェックをしていても、「完了」メッセージが最前面に表示されます。
ただ、いくつか環境の違うPCで試したところ、teamsやブラウザなどの前面に表示されない場合がありました。
何をしていても前面に表示されるPCもあるので、実際に有効かどうかはご利用のPC環境で試してもらうしかない感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Option Explicit Public Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) 'テスト用なので、本番では不要' Public Declare PtrSafe Function MessageBox Lib "user32.dll" Alias "MessageBoxA" (ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal uType As Long) As Long Public Const MB_OK = &H0 'OKボタンフラグ' Public Const MB_ForeFront = &H40000 '最前面フラグ' Public Sub ForeFrontMsgBox() Dim msgText As String Dim msgCaption As String Sleep 5000 'テスト用に5秒止めてます。本番では不要' msgText = "完了" msgCaption = "最前面に表示" MessageBox 0, msgText, msgCaption, MB_OK Or MB_ForeFront End Sub |