dポイントプレゼントキャンペーン実施中!

エクセルVBAなのですが、UserForm1を最前面に表示して、
他のどのウインドウをアクティブにしても消えない状態にしたいのですが、
どのようなコードを書けばできるでしょうか。
VB.NETで表すとMe.TopMost = Trueとなると思うのですが、
エクセルVBAだとそのような書き方はないようです。

もうしわけございませんがご教示頂きたく、お願いいたします。m(__)m

A 回答 (2件)

あらかじめ、フォームのプロパティの[ShowModal]をFalseにしておいて、以下のような方法ではダメでしょうか?


画面のアクティブイベントを利用するのは、個人的に嫌いなのですが。。。


Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST As Long = -1
Private Const SWP_NOSIZE As Long = &H1&
Private Const SWP_NOMOVE As Long = &H2&


Private Sub UserForm_Activate()
Call SetWindowPos(GetForegroundWindow, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
End Sub

この回答への補足

あと、前回のお礼の所でIDが呼び捨てになっていて、
申し訳ございませんでした。

補足日時:2006/05/16 08:29
    • good
    • 4
この回答へのお礼

おはようございます。
ご回答ありがとうございます。
早速試させて頂いたところ、うまく動きました!!
少し数字を変えてみるなどして、色々試してみたいと思います。
助かります。ありがとうございました。

お礼日時:2006/05/16 08:27

できないんじゃないかと思います

    • good
    • 0
この回答へのお礼

いつも当方の質問に目を通して頂いてありがとうございます。
また何か教えて頂けたら大変うれしいです。m(__)m

お礼日時:2006/05/16 08:28

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

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


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