• ベストアンサー

エクセルVBAのフォームを最前面にする方法を教えてください。

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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

popopompom
質問者

お礼

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

popopompom
質問者

補足

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

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

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

popopompom
質問者

お礼

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

関連するQ&A