Hoy vamos a aprender cómo resaltar la etiqueta sobre la que pasa el puntero del ratón usando VBA. Y, aunque es algo que no aporta nada en cuanto a funcionalidad, sí que le va a dar un toque estético y profesional a nuestro programa.
En el ejemplo que adjunto al final del post, he incluido un solo formulario que será suficiente para ver el efecto.
Se trata del calendario del mes de Noviembre. Si pasas el ratón por encima de cada día, verás como se va resaltando sobre los demás.
En primer lugar, voy a mostraros el código que hay que implementar. Después, os explicaré cómo configurar la Hoja de propiedades del formulario para que todo esto funcione.
El código consiste en dos funciones, una para resaltar, y otra para dejar de resaltar. Fácil ¿no?
Function ActivaLabel(Etiqueta As Label)
'Resalta la etiqueta sobre la que se mueve el cursor del ratón
With Etiqueta
'Si el borde de la etiqueta del día es blanco, entonces pinta el borde y el fondo de la misma en azul
If .BorderColor = 16777215 Then
.BackColor = 16773345
.BorderColor = 16711680
End If
End With
End Function
Function DesactivaLabel()
'Devuelve la etiqueta a su estado original
Dim ctrLabel As Control
Dim ctrForm As Form
Dim FiestasFijas As Variant
Set ctrForm = Me
For Each ctrLabel In ctrForm
With ctrLabel
If .ControlType = acLabel Then
'Si el borde de la etiqueta del día es azul, entonces pinta el borde y el fondo de la misma en blanco
If .BorderColor = 16711680 Then
If .Caption <> Day(Date) Then
.BackColor = 16777215
.BorderColor = 16777215
End If
End If
End If
End With
Next ctrLabel
End Function
La función ActivaLabel() simplemente comprueba si el borde de la etiqueta del día sobre el que se encuentra el ratón es blanco. En caso afirmativo, pinta el borde y el fondo de la misma en azul.
Por el contrario, la función DesactivaLabel() comprueba si el borde de la etiqueta del día sobre el que se encuentra el ratón es azul. En caso afirmativo, pinta el borde y el fondo de la misma en blanco.
¿Cuándo se ejecuta cada una de ellas?
La función de desactivación se ejecuta cada vez que movemos el ratón por el detalle del formulario. Para ello, implementamos el siguiente código,
Private Sub Detalle_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
DesactivaLabel
End Sub
Sin embargo, la función de activación se ejecutará cada vez que pasemos el ratón por encima de cualquier día del calendario. Para ello, en modo diseño del formulario, selecciona cualquier día del calendario y fíjate en la pestaña Eventos de la Hoja de propiedades.
Como podéis ver, en el evento "Al mover el mouse" llamamos a la función ActivaLabel() pasándole como parámetro el nombre de la etiqueta. Sencillo, ¿verdad?
Espero que hayas aprendido con este ejemplo cómo resaltar la etiqueta sobre la que pasa el puntero del ratón usando VBA para hacer más atractivos tus diseños.
Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.
Hasta la próxima.
Si te ha servido y quieres donar
Descarga el archivo del ejemplo
Últimas publicaciones
0 comentarios