Excel中將UserForm中的關閉按鈕無效的方法
一、定義常量,宣告方法
Public Const SC_CLOSE = &HF060&
Public Const MF_BYCOMMAND = &H0&
'(×按鈕無效化用)クラスからウィンドウハンドルを取得
Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
'(×ボタン無効化用)ウィンドウに関する情報を取得
Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, _
ByVal bRevert As Long) As Long
'(×ボタン無効化用)メニューから專案を削除
Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu As Long, _
ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
'(×ボタン無効化用)ウィンドウのメニューバー外枠を再描畫
Declare Function DrawMenuBar Lib "user32" _
(ByVal hwnd As Long) As Long
二、x按鈕無效化
‘表單初期化方法中
Private Sub UserForm_Initialize()
Dim hwnd As Long
Dim hMenu As Long
Dim rc As Long
Dim strClassName As String 'クラス名
'ユーザーフォームのクラス名を指定
strClassName = "ThunderDFrame"
'ウィンドウのハンドルを取得
hwnd = FindWindow(strClassName, Me.Caption)
'ウィンドウに関する情報を取得
hMenu = GetSystemMenu(hwnd, 0&)
'[x]ボタンを無効(Gray化)
rc = DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
'ウィンドウのメニューバーを再描畫
rc = DrawMenuBar(hwnd)
End Sub