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

Preguntas similare

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


Respuesta Responder a este mensaje
#2 Emilio \(en el curro\)
20/09/2004 - 16:43 | Informe spam
Muchas gracias Fernando, mañana lo pruebo y te cuento

Saludos a
Emilio

"Fernando Arroyo" escribió en el mensaje
news:%232%
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


Respuesta Responder a este mensaje
#3 Emilio \(en el curro\)
21/09/2004 - 10:09 | Informe spam
Hola Fernando

Cómo no podía ser de otro modo, los dos metodos funcionan perfectamente.
Muchas gracias
Saludos a
Emilio

"Fernando Arroyo" escribió en el mensaje
news:%232%
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


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida