すぐに役立つエクセルVBAマクロ集 すぐマク
すぐに役立つ Excel VBA マクロ集 Excel VBA Macro
FAQ
Google
 
Home |  What's New! |  Gallery |  Introduction |  Service |  Profile 500連発・組み方講座フォロー Big Color Pallet
[広告]
Excel VBA Macro
Excel DownLoad
© 1997 - 2007
永井善王.
All RightsReserved.
HappyTech & Co., Ltd.
www.happy500z.com
Excel VBA Macro ・ ユーザーフォーム ・ FAQ
ユーザーフォームの閉じる[×]ボタンを非表示にするには?
Question 84.4 Excel VBA Borad (掲示板)より Previous Next
初めて書き込みます。
ユーザーフォームを作成したのですが、フォームの ×(閉じる)を表示しない(使用不可)様に出来ませんか???

やっと完成したのにこれで困っています。ぜひ良いアドバイスをお願いします。助けて下さい。
Answer   2001.9.14 うな
API関数を使わないとできないと思います。以下がサンプルです。
注意として、終了する手段がなくなるので、必ず自フォームを終了 する処理を記述しましょう。
Private Const USERFORM_CLASSNAME = "ThunderDFrame"
Private Const GWL_STYLE = -16
Private Const WS_SYSMENU = &H80000

'// API関数宣言
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
                                        ByVal lpClassName As String, _
                                        ByVal lpWindowName As String) As Long

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
                                        ByVal hwnd As Long, _
                                        ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" ( _
                                        ByVal hwnd As Long, ByVal nIndex As Long, _
                                        ByVal dwNewLong As Long) As Long

Private Declare Function DrawMenuBar Lib "user32" ( _
                                        ByVal hwnd As Long) As Long

'// 以下イベントプロシージャ

Private Sub CommandButton1_Click()
    ' 自フォーム終了
    Unload Me
End Sub

Private Sub U2serForm_Initialize()
    Dim hwnd As Long
    Dim lngRet As Long

    ' ウインドウハンドル取得(Excel2000)
    hwnd = FindWindow(USERFORM_CLASSNAME, Me.Caption)
    ' ウインドウ属性取得
    lngRet = GetWindowLong(hwnd, GWL_STYLE)
    ' ウインドウ属性変更(システムメニュー削除)
    lngRet = SetWindowLong(hwnd, GWL_STYLE, lngRet And Not WS_SYSMENU)

End Sub