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'
Insertamos el siguiente procedimiento 'Sub' en un módulo estándar:
Tras ejecutar nuestra macro comprobamos el éxito conseguido, solo los controles tipo barras de desplazamiento se han visto afectados por el cambio...
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'
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...
Hola Ismael. Gracias por esto. Muy util.
ResponderEliminarSupongo que en vez de:
Dim sb As Shape
es
Dim formas As Shape
No?
Saludos
;-)
Eliminarcorrecto. queda corregido
Es lo malo de ir aprovechando retazos de otros ejemplos
:D