Làm thế nào để loại bỏ nút close (x) khỏi UserForm trong vba excel?

Khi bạn thiết kế form nhập liệu trong excel, bạn đã thiết kế một nút đóng để thoát khỏi Form nhập liệu và muốn người dùng không nhấp vào nút close mặc định của microsoft thì bạn sẽ ẩn hay remove nút close mặc định này đi, bài này sẽ hướng dẫn các bạn cách làm điều đó.
Trong UserForm bạn paste code dưới đây vào:
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Const GWL_STYLE = -16
Const WS_SYSMENU = &H80000
Private Sub UserForm_Initialize()
Dim hWnd As Long, lStyle As Long
If Val(Application.Version) >= 9 Then
hWnd = FindWindow("ThunderDFrame", Me.Caption)
Else
hWnd = FindWindow("ThunderXFrame", Me.Caption)
End If
lStyle = GetWindowLong(hWnd, GWL_STYLE)
SetWindowLong hWnd, GWL_STYLE, (lStyle And Not WS_SYSMENU)
End Sub
Ngoài cách nhấp vào nút close mặc định người dùng có thể sử dụng tổ hợp phím Alt + F4 để đóng Form của bạn, đoạn code dưới đây sẽ ngăn chặn việc dùng phím tắt đó.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub
Chú ý: Form bạn thiết kế cần có một buttom Close có code như sau nhé:
Private Sub Cmdclose_Click()
Unload Me
End Sub
Chúc bạn thành công!

No comments :