我用如下函数屏蔽了窗体的关闭按钮,但是我想用unload me来关闭窗体时也不行了,请问应该怎么办?
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = 1
End Sub我想使窗口上的关闭按钮失效,但是可以用CommandButton来关闭窗口

解决方案 »

  1.   

    这样即可:Private Sub CommandButton1_Click()
        Unload Me
    End SubPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        If CloseMode = 0 Then Cancel = True
    End Sub
      

  2.   

    可以用API使右上方的X变为不能用
    '下面写在程序最上面
    Private Declare Function GetSystemMenu Lib "user32" (ByVal HWnd As Long, ByVal bRevert As Long) As Long
    Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Const MF_BYCOMMAND = &H0&
    '下面写在Form_Load里
    MyMenu = GetSystemMenu(Me.HWnd, 0)
        RemoveMenu MyMenu, &HF060, MF_BYCOMMAND
      

  3.   

    Option ExplicitPrivate Const GWL_STYLE = (-16)Private Const WS_SYSMENU = &H80000
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Sub CommandButton1_Click()
        Unload Me
    End SubPrivate Sub UserForm_Initialize()
        Dim hwnd As Long
        Dim nStyle As Long
        
        hwnd = FindWindow("ThunderDFrame", "UserForm1")
        nStyle = GetWindowLong(hwnd, GWL_STYLE)
        nStyle = nStyle - WS_SYSMENU
        SetWindowLong hwnd, GWL_STYLE, nStyle
    End Sub