【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?

エクセルVBAにて、指定時刻になったらメッセージボックスを、最前面に表示させるプログラムを作成中です。
時刻の指定は、ontimeメソッドの使用でできました。

しかし、最前面(他のアプリケーションを開いていても、メッセージボックスが手前に表示される)がどうしてもできません。。

VBだとAPI関数を使って、フォームを常に最前面表示はできました。

メッセージボックスで、このような表示方法は実現可能なのでしょうか?
どなたか教えて下さい。よろしくお願いします。

A 回答 (4件)

 こんにちは。



 直接WIN32APIサイドのメッセージボックスを呼び出せば、最前面スタイルを指定出来ます。
 http://wisdom.sakura.ne.jp/system/winapi/win32/w …

 以下では駄目でしょうか?

'プロトタイプ
Public Declare 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

'OKボタンを保有するフラグ
Public Const MB_OK = &H0

'最前面フラグ
Public Const MB_TOPMOST = &H40000

'呼び出し
Public Sub TestTopMostMsgBox()

Dim lpText As String
Dim lpCaption As String

lpText = "テスト"
lpCaption = "最前面メッセージボックス"

MessageBox 0, lpText, lpCaption, MB_OK Or MB_TOPMOST

End Sub
    • good
    • 5
この回答へのお礼

APIは調べましたが、まさかこんな方法があるとは。
ありがとうございます!
正に、理想通りの実行結果が得られました。

お礼日時:2009/04/14 22:11

>VBだとAPI関数を使って、フォームを常に最前面表示はできました。



VBAでもこの方法しかありません。
他のアプリが最前面ではVBAの関知する所ではないので、エクセル上に表示する事しか出来ません。
    • good
    • 0

システムモーダルで。


rt = msgbox("メッセージ", vbOKOnly + vbSystemModal)
    • good
    • 12

経験ないですけど。



Excelをアクティブにしてから表示したら、最前面には来ないでしょうかね?
⇒他のアプリの後ろとは、そのアプリがアクティブな状態なわけですよね?
    • good
    • 0
この回答へのお礼

>n-junさん
今回は、エクセルをアクティブにしてない状態でも、メッセージボックスを最前面に表示させないといけないのです。。

エクセルをアクティブにしたら最前面には来ます。
そうです。

お礼日時:2009/04/13 21:40

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A