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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章