jueves, 27 de septiembre de 2018

VBA: Recorrer controles de formulario

Recientemente me encontré ante una situación de trabajo algo laboriosa, y es que debía redirigir la celda vinculada de bastantes controles de formulario en mi hoja de trabajo...
He de reconocer que inicialmente, y por las prisas del momento, lo realicé manualmente (por suerte eran solo 15-20 controles)...
pero en mi cabeza rondaba una macro para ahorrar tiempo de procesamiento.


El problema era que los controles de formulario tipo Barra de desplazamiento (scroll bars) tenían como celda vinculada la celda de otra hoja, y el objetivo era redirigirlas hacia la hoja activa...
Tenemos los siguientes controles en nuestra 'Hoja1'

VBA: Recorrer controles de formulario



Insertamos el siguiente procedimiento 'Sub' en un módulo estándar:

Sub RecorreScrollBars()
Dim formas As Shape

'recorremos todos los controles y objetos y formas de la hoja activa
For Each formas In ActiveSheet.Shapes
    'determinamos si es un control de formulario
    If formas.Type = msoFormControl Then
        'vemos si es un ScrollBar
        If formas.FormControlType = xlScrollBar Then
            'asigno el valor actual del vínculo (celda vinculada)
            enlace = formas.ControlFormat.LinkedCell
            'y lo llevo a la celda de la izquierda del control
            formas.TopLeftCell.Offset(0, -1).Value = enlace
            'finalmente asigno nuevo valor de Celda vinculada
            'quitando del vínculo el nombre de la hoja
            formas.ControlFormat.LinkedCell = Replace(enlace, "Hoja2!", "")
        End If
    End If
Next formas

End Sub



Tras ejecutar nuestra macro comprobamos el éxito conseguido, solo los controles tipo barras de desplazamiento se han visto afectados por el cambio...

VBA: Recorrer controles de formulario

2 comentarios:

  1. Hola Ismael. Gracias por esto. Muy util.

    Supongo que en vez de:

    Dim sb As Shape

    es

    Dim formas As Shape


    No?

    Saludos

    ResponderEliminar
    Respuestas
    1. ;-)
      correcto. queda corregido

      Es lo malo de ir aprovechando retazos de otros ejemplos
      :D

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.