Cách này là Excel bị treo luôn Thầy à. Không đóng File cũng như không thoát Excel được Thầy ơi.Bạn dùng thử đoạn code này: ( vô hiệu hóa nút x)
Mã:Private Sub Workbook_BeforeClose(Cancel As Boolean) Cancel = True End Sub
Em xin nhờ các anh chị trong diễn đàn hướng dẫn dùm câu lệnh loại bỏ và khôi phục nút Close (nút X) ở góc trên, bên phải màn hình EXcel. Em xin cảm ơn nhiều!
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = AllowClose
End Sub
Private Sub Workbook_Open()
AllowClose = True
End Sub
Public AllowClose As Boolean
Sub ShutDownWorkBook()
Application.Quit
AllowClose = False
ThisWorkbook.Close True
End Sub
Chỉ thấy Tools/Protection/ProtectWorkbook/WindowCó 2 nút X :
- Thoát khỏi excel
- Thoát khỏi File (Workbook) hiện hành
...
Còn cái thứ 2 : Bạn chọn
Data/Protection/ProtectWorkbook/Window
tedaynui đã viết:Trích:
Nguyên văn bởi voda
Bạn dùng thử đoạn code này: ( vô hiệu hóa nút x)
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean) Cancel = TrueEnd Sub
Cách này là Excel bị treo luôn Thầy à. Không đóng File cũng như không thoát Excel được Thầy ơi.
TDNĐương nhiên là không thoát Excel được nhưng nó vẫn hoạt động bình thường mà.
Muốn thoát thì cho nó dòng lệnhMã:Application.EnableEvents=False
Dòng lệnh này đặt chỗ nào vậy bác ???Đương nhiên là không thoát Excel được nhưng nó vẫn hoạt động bình thường mà.
Muốn thoát thì cho nó dòng lệnhMã:Application.EnableEvents=False
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.EnableEvents = False
Cancel = AllowClose
End Sub
Private Sub CommandButton1_Click()
Application.Quit
Application.EnableEvents = False
ThisWorkbook.Close True
End Sub
Mình nghĩ dòng lệnh này đặt trong sheet hoặc module, gắn với một button để thoát:
Mã:Private Sub CommandButton1_Click() Application.Quit Application.EnableEvents = False ThisWorkbook.Close True End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If AllowClose = False Then
Cancel = True
Else
ThisWorkbook.Save
End If
End Sub
Public AllowClose As Boolean
Sub CommandButton1_Click()
AllowClose = True
Application.Quit
End Sub
[COLOR=green]Private Sub Workbook_BeforeClose(Cancel As Boolean)[/COLOR]
[COLOR=green] If Sheet1.Cells(1, 1) <> 1 Then[/COLOR]
[COLOR=green] Cancel = True[/COLOR]
[COLOR=green] End If[/COLOR]
[COLOR=green]End Sub[/COLOR]
[COLOR=green] Sheet1.Cells(1, 1) = 1[/COLOR]
[COLOR=green] ActiveWindow.Close False[/COLOR]
[COLOR="Gray"]Public Const MF_BYCOMMAND = &H0&
Public Const MF_GRAYED = &H1&
Public Const SC_CLOSE = &HF060&
Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Public Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Public Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
[/COLOR]
Sub RemoveCloseMenu()
Dim h&, hm&, ID_mSepr&
If Application.Version >= 10 Then 'Excel XP/2003/2007 or higher
h = Application.hwnd
Else 'Excel 2000 or lower
h = FindWindow("XLMAIN", vbNullString)
End If
hm = GetSystemMenu(h, False)
ID_mSepr = GetMenuItemID(hm, 5)
RemoveMenu hm, SC_CLOSE, MF_BYCOMMAND
RemoveMenu hm, ID_mSepr, MF_BYCOMMAND
End Sub
Phải nói là rất hay.Mấy cái dòng public có tác dụng gì vậy