Disabling the Red X in Excel
Hi,
you can disabled "X" controlbox by API calls like:
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias _
"FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As
Long
Private Const SC_CLOSE As Long = &HF060 'Close "x" box
Sub DisabledX()
Dim Hwndx As Long, xBox As Long
If Val(Application.Version) <= 9 Then
Hwndx = FindWindow("XLMAIN", Application.Caption) 'xl2000 and earlier
Else
Hwndx = Application.hwnd 'xl2002 and later
End If
Hwndx = FindWindowEx(Hwndx, 0, "XLDESK", vbNullString)
Hwndx = FindWindowEx(Hwndx, 0, "EXCEL7", ActiveWindow.Caption)
xBox = GetSystemMenu(Hwndx, 0)
DeleteMenu xBox, SC_CLOSE, 0&
'Doesnt work unless you change the window state of worksheet/book to
restore
End Sub
--
Regards,
Halim
"beginner here" wrote:
I'm trying to find the coding to disable the red 'X' in the right hand corner
of any Excel worksheet. I know what the code is for a form, but can't find
the code for the worksheet.
The code I'm using for my form is the following:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
MsgBox "Please use the button !!"
End If
End Sub
Any help would be appreciated.
Steve
|