Il est parfois intéressant de supprimer la possibilité de sortir d'un userform tant que toutes les entrées n'ont pas été saisies, mais il reste toujours la croix qui autorise l'utilisateur à sortir.
Le code ci-dessous permet d'oter cette croix.
Voir une démo générale sur ce tuto.
Dans un module général (Module1 par exemple) coller le code ci-dessous.
Option Explicit
'pour enlever la croix rouge d'un UF
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
Public Sub OteCroix(Caption As String)
Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") _
& "Frame", Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub
Et dans un UserForm..
Private Sub UserForm_Initialize()
OteCroix Me.Caption
End Sub