¿Cómo puedo hacer para ocultar un botón en un formulario al utilizar Microsoft Excel?

¿Qué tal fer molestándote nuevamente, oye, hice lo que me dijiste para cerrar un formulario automáticamente, gracias, como le puedo hacer para ocultar en el mismo formulario o en cualquier formulario el botón de cerrar?, ojala me puedas ayudar, gracias

1 respuesta

Respuesta
1
Por lo que puedo deducir de tu última pregunta, la confusión pasa por estar hablando de dos botones completamente distintos. Siempre hable (y así lo aclaré) de un botón expresamente dibujado por ti en el cuerpo del formulario. Es decir un control ActiveX tomado de la barra de Controles y colocado sobre el formulario.
Ahora veo que el que mencionas, parece ser aquel del ángulo superior derecho marcado con una X.
Si adiviné, este botón es inamovible, hasta donde mis pobres conocimientos de VBA me lo permiten saber.
He buscado información sobre la posibilidad de removerlo, fracasando exitosamente en todos los intentos. De hevcho no hay una Propiedad del formulario que maneje ese botón...
Pero como reza el dicho: si no puedes vencerlo, únete a él, se me ocurrió una alternativa como para darte una solución.
Si el botón se empeña en permanecer allí, que se quede. Nosotros haremos que sea inocuo. Que al pulsarlo no pase nada o, mejor, que avise que el formulario debe cerrarse con un botón colocado en el formulario.
Desconozco que esto sea lo que quieres, pero -convengamos- en algún momento ese formulario debe permiter ser cerrado, ¿de acuerdo? Tal vez quieras que se cierre automáticamente, después de completar algún procedimiento especial, pero creo que es prolijo dejar una chance de ser cerrado con un botón en particular.
A los efectos de este ejemplo, tal botón será el que te mencioné desde la primera respuesta (cmdb_Cerrar), el cual seguramente, mantienes tras las pruebas que hiciste.
Bien, ahora necesitarás una macro para lanzar erl formulario (tal vez ya la tengas) que agregue una variable de control.
Pro lo tanto pega este procedimiento en un módulo nuevo:
Public Cancela As Boolean
Sub MuestraForm()
Cancela = False
UserForm1.Show
End Sub
---
Nota que la declaración de la variable es previa a la macro.
Bien, ahora en el panel de códigos del formulario, pega esto otro:
Private Sub cmdb_Cerrar_Click()
Cancela = True
Unload Me
Exit Sub
End Sub
Private Sub UserForm_Terminate()
Do While Not Cancela
Application.ScreenUpdating = False
QQ = Chr(34)
MsgBox "Use el botón " & QQ & "Cerrar" & QQ & " del formulario", vbInformation, "===== Botón inhabilitado ====="
Application.ScreenUpdating = True
MuestraForm
Loop
End Sub
---
Es muy simple, al presentarse el formulario la variable cancela toma el valor "falso". Y permanecerá así a menos que se pulse el botón cmdb_Cerrar que la pasa a Verdadero.
Al cerrarse el formulario, se controla el estado de esa variable. Si fuera "False", aparece un mensaje y se relanza el formulario. (Si no quieres que aparezca tal aviso, deja solo la palabra "MuestraForm" y elimina el resto dentro de la estructra Do while... loop.
Si la variable fuese "True" saldrá normalmente.
Bueno, Latorre, espero haberte entendido y que esto te satisfaga...
Muy buen fin de semana
Fernando
Don Latorre
Supuesto que el nombre de tu botón de cerrar fuese, por ejemplo, "cmdb_Cerrar", la instrucción que buscas es:
cmdb_Cerrar.Visible = False
Obviamente con:
Cmdb_Cerrar.Visible = True
Lo haces visible nuevamente.
Dependerá de tu objetivo, pero usualmente un modo más elegante es inhabilitar el botón sin ocultarlo. Eso se logra con:
Cmdb_Cerrar.Enabled = False
El botón sigue visible en el formulario pero grisando su texto y, por supuesto, inoperable.
Espero que te sea útil.
Un abrazo!
Fernando
Fer me podrías explicaar más la verdad no te entendí muy bien por que lo hice pero no me funciono gracias
En principio asumí que tienes un formulario y que quieres que uno de sus botones no se muestre o esté inhabilitado.
Dependiendo de cuando sea el momento que quieras que tal botón desaparezca será cuando debes colocar la instrucción sugerida.
Previamente, habrás cambiado el nombre que le asigna BVA al botón por cmdb_Cerrar.
Esto lo haces, seleccionando ese control y preionando la tecla F4 que muestra las propiedades. En aquella que dice (name), reemplaza CommandButtonX por cmdb_Cerrar
Un posible evento para asociar la instrucción para ocultar ese botón es al mostrar el formulario.
Así deberías colocar en el panel de macros del formulario, lo siguiente:
Private Sub UserForm_Initialize()
cmdb_Cerrar.Visible = False
End Sub
Así, al cargarse el formulario, ese botón no estará visible en el cuerpo del formulario.
Pero el momento de ocultarlo/mostrarlo lo tienes que definir tu.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas