[リストへもどる]
一括表示

投稿時間:2002/10/17(Thu) 14:30
投稿者名:みよし
Eメール:
URL :
タイトル:
他アプリよりもフォームが常に前に
すいません。また投稿させていただきますのでよろしくお願いします。
フォームを一つ作成し、そこにコマンドボタンが一つあります。

そのコマンドボタンを押すとExcelのファイルが最大化されて起動します。
と、ここまでは出来たのですが、フォームがExcelの背面に回ってしまいます。
タスクバーで切り替えれば良いのでしょうが、Excelを操作しても常に
フォームが前にあるようにしたいのです。

このWebサイトの「フォームを常に前面に表示する」などを見たのですが
初心者の私には少し難しいようです。
すいませんがもう少し詳しく教えていただけないでしょうか?

投稿時間:2002/10/17(Thu) 20:51
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 他アプリよりもフォームが常に前に
下記コードをフォームにペーストして試して見て下さい

Option Explicit
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 = (-1)
Private Const SWP_NOSIZE = &H1&
Private Const SWP_NOMOVE = &H2&

Private Sub Form_Load()
'これでこのフォームが常に一番手前に表示されます。
    Dim retValue As Long
    '現在の位置とサイズでウインドウリストの一番上に配置する
    retValue = SetWindowPos(Me.hwnd, HWND_TOPMOST _
                , 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
End Sub

投稿時間:2002/10/18(Fri) 10:47
投稿者名:みよし
Eメール:
URL :
タイトル:
Re^2: 他アプリよりもフォームが常に前に
花ちゃんさん、出来ました。有難うございます。
とりあえず完全コピペですが・・・
意味が分かるように勉強いたします。

投稿時間:2002/10/18(Fri) 13:22
投稿者名:Say
Eメール:
URL :
タイトル:
Re^3: 他アプリよりもフォームが常に前に
> 花ちゃんさん、出来ました。有難うございます。
> とりあえず完全コピペですが・・・
> 意味が分かるように勉強いたします。

今回のコードにあった SetWindowPos はAPIと呼ばれる
システムが用意した関数のひとつです。
Yahooあたりで「APIとは」で調べれば、いろいろ説明がみつかります。