- ベストアンサー
エクセルVBAのフォームを最前面にする方法を教えてください。
エクセルVBAなのですが、UserForm1を最前面に表示して、 他のどのウインドウをアクティブにしても消えない状態にしたいのですが、 どのようなコードを書けばできるでしょうか。 VB.NETで表すとMe.TopMost = Trueとなると思うのですが、 エクセルVBAだとそのような書き方はないようです。 もうしわけございませんがご教示頂きたく、お願いいたします。m(__)m
- みんなの回答 (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
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
できないんじゃないかと思います
お礼
いつも当方の質問に目を通して頂いてありがとうございます。 また何か教えて頂けたら大変うれしいです。m(__)m
お礼
おはようございます。 ご回答ありがとうございます。 早速試させて頂いたところ、うまく動きました!! 少し数字を変えてみるなどして、色々試してみたいと思います。 助かります。ありがとうございました。
補足
あと、前回のお礼の所でIDが呼び捨てになっていて、 申し訳ございませんでした。