Uno de los métodos más comunes para correr macros es ligarlas a un botón. Esto, como ya hemos visto, lo hacemos creando el botón con la barra de herramientas de Formularios o de Cuadro de Controles y ligando la macro a él.
Supongamos esta macro
Sub hola()
Dim Mensaje
Mensaje = "La hora es: " & Time & vbCrLf
Select Case Time
Case Is <= 0.5
Mensaje = Mensaje & "Buenos días!"
Case 0.5 To 0.75
Mensaje = Mensaje & "Buenas tardes!"
Case Else
Mensaje = Mensaje & "Buenas noches!"
End Select
MsgBox Mensaje
End Sub
Esta macro produce un mensaje que muestra la hora y un de acuerdo a ésta, un saludo. Para correrla la ligamos a un botón
Al apretar el botón veremos
Uno de mis lectores me consultaba cómo hacer que este botón "flote" sobre la hoja. Esto le era necesario ya que se trataba de una hoja con muchas columnas y al navegar en la hoja, el botón quedaba oculto.
Apresurémonos a decir que hay otras soluciones fuera de ligar una macro a un botón. Podemos ligar la macro a un menú o crear un atajo de teclado, como ya hemos mostrado. De esta manera, podemos activar la macro sin importar donde estemos en la hoja.
Pero, si por algún misterioso motivo, no tenemos más remedio que ligar la macro a un botón y queremos que éste esté siempre visible, las posibilidades son:
1 – Crea una barra de herramientas y ligarle la macro
2 – Crear un UserForm y definirlo como "modeless"
Personalmente prefiero la primer opción. La ventaja de la segunda, es que nos permite determinar el tamaño de la forma.
Para crear una barra de herramientas personalizada con la macro hacemos lo siguiente:
# abrimos el menú Ver-Barras de Herramientas-Personalizar y apretamos el botón Nueva
# Le damos un nombre a la nueva barra y apretamos Aceptar
# Abrimos la pestaña Comandos y buscamos Macros en la ventana Categorías
# Ahora arrastramos la opción Personalizar el botón a la nueva barra de herramientas
# Con un clic del botón derecho abrimos el menú de la barra y seleccionamos la opción Asignar macro, lo que hacemos tal como con el botón.
A partir de esta momento, la barra flotará sobre la hoja, no importa adonde nos desplacemos.
Esta barra estará presente en todas las hojas del cuaderno, hasta que la cerremos. Esto puede ser una ventaja o una desventaja, dependiendo de la macro. Si la macro debe correr sólo cuando determinada hoja sea la activa, esto puede ser un inconveniente,
Crear un UserForm flotante requiere un poco más de conocimiento y práctica de Visual Basic. Los pasos son los siguientes:
# Abrimos el editor de Vba (Alt+F11), agregamos un Userform y sobre el pegamos un botón
# Cambiamos el valor de Caption en la ventana de Propiedades del botón a "Saludar"
# Hacemos un doble clic sobre el botón para abrir el módulo y ponemos este código
# Volvemos al UserForm (Ctrl+Tab) y en la ventana Propiedades del Userform cambiamos la propiedad ShowModal a False
Esto permitirá seguir trabajando en la hoja a pesar de no haber cerrado el formulario.
# Programamos el evento Workbook_Open, si queremos que el botón aparezca en todas las hojas, cuando abrimos el cuaderno
Private Sub Workbook_Open()
UserForm1 Show
End Sub
Si queremos que el botón aparezca sólo en una hoja determinada, programamos también el evento en el módulo de la hoja
Private Sub Worksheet_Activate()
UserForm1.Show
End Sub
En las restantes hojas tendremos que cerrar el formulario, o programar el evento Activate de esas hojas así:
Private Sub Worksheet_Activate()
Unload UserForm1
End Sub
# Cambiamos el tamaño del UserForm y/o del botón de acuerdo a nuestros deseos.
Technorati Tags: MS Excel
Hola gracias por tu docencia, te hago una pregunta, ¿se podría insertar un botón de manera tal que al ejecutar una macro apareciera un user form en cambio de navegar por las columnas me permita navegar por todas las hojas de un libro?, ¿se podría poner éste botón flotante de manera que aparezca independientemente de la hoja en la cual me encuentre, para regresar a la hoja de origen?. me interesaría mucho ya que tengo un libro con bastantes hojas que tengo que consultar para poder completar una planilla que está en la primera hoja, desde ya gracias.
ResponderBorrarLa respuesta a todas las preguntas es si. Pero para navegar un cuaderno con muchas hojas hay otras alternativas, como la que muestro en esta nota.
ResponderBorrar