Botón cerrar [x] en UserForm

20/09/2004 - 16:03 por Emilio \(en el curro\) | Informe spam
Hola a tod@s

¿Es posible eliminar el Botón Cerrar, (el aspa de la esquina superior
derecha) de un UserForm en Excel, trabajo con Excel XP y Windows XP

Gracias anticipadas

Saludos a tod@s
Emilio
 

Leer las respuestas

#1 Fernando Arroyo
20/09/2004 - 16:36 | Informe spam
En un módulo creado por ti:

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Public Const GWL_STYLE As Long = -16&
Public Const WS_SYSMENU As Long = &H80000


Y en el módulo del formulario:

Private Sub UserForm_Initialize()
Dim hWnd As Long
Dim lngWstyle As Long

'Localizar la ventana del formulario
hWnd = FindWindow(vbNullString, Me.Caption)
lngWstyle = GetWindowLong(hWnd, GWL_STYLE)

'Borrar el botón X
SetWindowLong hWnd, GWL_STYLE, lngWstyle And (Not WS_SYSMENU)

'Dibujar de nuevo la barra
DrawMenuBar hWnd
End Sub


Otra posibilidad (que requiere bastante menos código y ninguna API) es no borrar la X pero deshabilitarla, lo que se consigue con algo como el siguiente código, que va en el módulo del formulario:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode <> vbFormCode Then Cancel = True
End Sub


Un saludo.


Fernando Arroyo
MS MVP - Excel


"Emilio (en el curro)" <miliu56 ARROBA hotmail.com> escribió en el mensaje news:
Hola a

¿Es posible eliminar el Botón Cerrar, (el aspa de la esquina superior
derecha) de un UserForm en Excel, trabajo con Excel XP y Windows XP

Gracias anticipadas

Saludos a
Emilio


Preguntas similares