jueves, 14 de noviembre de 2013

VBA: El control Slider o Deslizador - Microsoft Slider control, version 6.0

Trabajaré con versión Excel 2010, aunque para versiones anteriores funciona exactamente igual... también existe tanto para insertar en la hoja de cálculo como en un Userform.
Se trata de añadir un Control adicional en particular, el Microsoft Slider control, version 6.0 que tendrá este aspecto:

VBA: El control Slider o Deslizador - Microsoft Slider control, version 6.0


Para llegar a este control seguiremos cuatro sencillos pasos:
Paso 1: Iremos a la ficha Programador > grupo Controles > botón Insertar > Controles ActiveX > Más controles

VBA: El control Slider o Deslizador - Microsoft Slider control, version 6.0


Paso 2: En la ventana diálogo que se abra buscaremos el control en cuestión: Microsoft Slider control, version 6.0

VBA: El control Slider o Deslizador - Microsoft Slider control, version 6.0


Paso 3: Insertar el control en nuestra hoja de cálculo (o UserForm), tra lo cual cambiaremos a Modo diseño en la ficha Programador > grupo Controles > botón Modo diseño.
Con modo diseño activado presionaremos el botón Propiedades:

VBA: El control Slider o Deslizador - Microsoft Slider control, version 6.0


Paso 4: En la venta Propiedades abierta nos fijaremos en las siguientes propiedades en particular:
Min
Max
SmallChange
LargeChange
TickStyle
y
en algunos casos también
SelectRange

VBA: El control Slider o Deslizador - Microsoft Slider control, version 6.0



Para nuestro ejemplo estas son las propiedades activadas:
Min = 0
Max = 25
SmallChange = 1
LargeChange = 5
TickStyle = 2-sldBoth
SelectRange = True

alt=


Como definiciones interesantes que emplearemos a continuación sirvan las siguientes:
SelStart : Devuelve o establece el valor de inicio de una selección.
SelLength : Devuelve o establece la longitud de una selección.
SelectRange : Devuelve o establece si un control Slider puede tener un intervalo de selección.


Una vez realizada esta configuración pasamos a la parte de código. Para ello accederemos a la ventana de código desde el control presionando botón derecho del ratón y luego Ver código; ya en la ventana de código insertaremos los siguientes procedimientos y eventos:

Private Sub Slider21_scroll()
'con el evento específico de _scroll llamamos a procedimiento Sub SliderHasta
Call SliderHasta
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub SliderHasta()
'situamos la posición de partida en el mínimo configurado en Propiedades
    Slider21.SelStart = Slider21.Min
'damos longiutd a la selección
    Slider21.SelLength = Slider21.Value
'Devolvemos el valor a una celda de la hoja
    Range("C6").Value = Slider21.Value
End Sub



Merece especial atención mencionar los eventos de los que que dispone este control; en general son los que posee la mayoría de los controles: Click, GotFocus, LostFocus, KeyDown, KeyUp, KeyPress, MouseDown, MouseMove etc... Pero también pose otros dos, llamados _Scroll y _Change.

El evento _Scroll se ejecuta cada vez que desplazamos el cursor (el slider); mientras que el evento _Change cada vez que la propiedad Value cambie de valor.

Para cambiar el valor de este control podemos optar por:
1- hacer clic en la barra del control, o manteniendo presionado el botón izquierdo del ratón hasta el punto deseado.
2- usar la rueda del ratón, con el control activo.
3- usar el teclado (flechas del cursor, Avance o Retroceso página, Inicio, Fin...)

El efecto final es el mostrado al inicio de la entrada...

2 comentarios:

  1. Como Vincular el valor de ua celda con el Deslizador ?

    ResponderEliminar
    Respuestas
    1. Hola Emiro, que tal estás?
      un gusto saludarte igualmente.

      lee la línea 12 del código subido.

      Un cordial saludo

      Eliminar