Ejecutar Macro al pasar el puntero del mouse por un shape o dando click en el.

Esta si la veo más complicada pero pudiera ser muy fácil o imposible, no lo se, por eso les pregunto a uds

Se puede ejecutar una macro en excel al pasarle el puntero del mouse a una forma insertada "rectángulo-shape", ¿o al dar click sobre el shape?

Y si es posible, como funciona.

Respuesta
6

Ejecutar una macro al dar click no tiene tanta complicación ya que puedes crear la macro y luego dar click derecho al Shape y seleccionar la opción "Asignar Macro" y asignarle la macro que has creado de forma que esta se ejecutará al dar click al Shape.

Para el caso de solo pasar el puntero, los Shapes no tienen un evento de Mouse Hover. Para lograr el efecto se pueden hacer un par de "trampas" como por ejemplo poner un Label transparente, los Labels si tienen un evento de MouseHover que en VBA se llama MouseMove.

Te he hecho un ejemplo:

Video demo

Obviamente esto depende de que es lo que quieras hacer al final, no das esa información, pero básicamente lo que te he dicho es el concepto general.

Supongo que el Shape seria solo para una mejora visual, y los códigos en realidad irían en los eventos del Label transparente, y el usuario nunca lo notaria.

Excelente!!!, con el Label me ha funcionado muy bien

Buen día Andy, sobre este mismo tema hay alguna forma de lograr algo parecido al onmouseover y onmouseout del html, ¿osease qué cuando pase el mouse por el label haga algo y que cuando el mouse ya no esta en la zona del label haga otra cosa?

Saludos.

Desafortunadamente VBA es antiguo y pobre y carece de características como estas, simebargo con la astucia de los usuarios a lo largo del tiempo se encuentran las maneras de sortear estas limitaciones. Rustica y poco ideal, pero la más común y popular forma de hacerlo es usando 2 Labels en vez de uno. El segundo Label debe ser un poco más grande e ir detrás de los otros elementos. Te he hecho un ejemplo, debido a que el grabador solo permite grabar 60 segundos, esta dividido en dos partes:

Video demo Parte 1

Video demo Parte 2

Como veras, hice un efecto de cambio de color en un Shape imitando un Mousehover HTML

El label encima del shape cambia su color, y el label detrás que ocupa un poco más de espacio, devuelve el shape a su color original.

El código es el siguiente:

Private Sub secundario_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
With Sheets("Sheet1").Shapes("Boton_Shp")
    .Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent5
End With
End Sub
Private Sub primario_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
With Sheets("Sheet1").Shapes("Boton_Shp")
    .Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent1
End With
End Sub

Andy

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas