◆◆MS-Excel2000スキルアップ講座/VBA編◆◆

フォームを閉じる×ボタンを非表示にする
EXCELのForm上にある×(閉じる)ボタンを非表示にしたいのですが、可能でしょうか?
以下のモジュールを参考にしてください。

標準モジュール***************************************

'----------------------------------------------------------------------
'クラス名またはキャプションタイトルを与えてウィンドウハンドルを取得する関数
'
'戻り値     成功 = 指定したクラスとウィンドウ名を持つウィンドウのハンドル
'           失敗 = NULL
'----------------------------------------------------------------------
Declare Function FindWindow Lib "user32" _
    Alias "FindWindowA" _
    (ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
   
   
'----------------------------------------------
'ウィンドウに関する情報を取得する関数
'
'戻り値     成功 = 要求したデータ(32ビット値)
'           失敗 = 0
'----------------------------------------------
Declare Function GetWindowLong Lib "user32" _
    Alias "GetWindowLongA" _
    (ByVal hwnd As Long, _
    ByVal nIndex As Long) As Long


'----------------------------------------------
'ウィンドウの属性を変更する関数
'
'戻り値     成功 = 変更前の値
'           失敗 = 0
'----------------------------------------------
Declare Function SetWindowLong Lib "user32" _
    Alias "SetWindowLongA" _
    (ByVal hwnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long
   
   
'----------------------------------------------
'ウィンドウのメニューバーを再描画する関数
'
'戻り値     成功 = 0以外
'           失敗 = 0
'----------------------------------------------
Declare Function DrawMenuBar Lib "user32" _
    (ByVal hwnd As Long) As Long
   

Public Const GWL_STYLE = -16&               'ウィンドウスタイルを取得する
Public Const WS_SYSMENU = &H80000           'タイトルバーにコントロールメニューボックスを持つウィンドウ

標準モジュールここまで***********************


ユーザーフォーム1***************************

Option Explicit

Private Sub UserForm_Initialize()

UserForm1.Caption = UserForm1.Caption & "(終了=Alt+F4)"

'*******************************
'ユーザーフォームの×を消す設定
'*******************************
   
    Dim hwnd As Long
    Dim lngNewLong As Long
    Dim rc As Long
   
    Dim strClassName As String  'クラス名
   
    'Excelのクラス名を指定
    Select Case Left(Application.Version, 1)
    Case Is <= 8
       strClassName = "ThunderXFrame" 'エクセル97
    Case Is > 8
       strClassName = "ThunderDFrame" 'エクセル2000
    End Select
   
    'ウィンドウのハンドルを取得
    hwnd = FindWindow(strClassName, _
                    Me.Caption)
   
    'ウィンドウに関する情報を取得
    lngNewLong = GetWindowLong(hwnd, _
                            GWL_STYLE)
                           
    'ウィンドウの属性を変更
    rc = SetWindowLong(hwnd, _
                    GWL_STYLE, _
                    lngNewLong And Not WS_SYSMENU)
   
    'ウィンドウのメニューバーを再描画
    rc = DrawMenuBar(hwnd)
   
End Sub

ユーザーフォーム1ここまで************************