VBA - Removing the red cross from a UserForm

December 2016




It may be needed that the possibility for exiting a userform until all entries have been entered is prohibited, but there is still the red cross which allows the user to exit.

Use the following code to remove the cross.

In the declaration part of a UF

'to remove the cross in a user form 
 Declare Function GetWindowLongA Lib "user32" _ 
(ByVal hwnd As Long, ByVal nIndex As Long) As Long 

 Declare Function SetWindowLongA Lib "user32" _ 
(ByVal hwnd As Long, ByVal nIndex As Long, _ 
ByVal dwNewLong As Long) As Long 

 Declare Function FindWindowA Lib "user32" _ 
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

In the initialization of the UF

Private Sub UserForm_Initialize() 
Dim hwnd As Long 
    hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") _ 
    & "Frame", Me.Caption) 
    SetWindowLongA hwnd, -16, GetWindowLongA

Related :

This document entitled « VBA - Removing the red cross from a UserForm » from CCM (ccm.net) is made available under the Creative Commons license. You can copy, modify copies of this page, under the conditions stipulated by the license, as this note appears clearly.