Vinculo automático al insertar una casilla de verificación en excel

Como puedo insertar una fila donde ya tengo 2 casillas de verificación vinculadas a otras dos celdas de la misma fila "AW5 y AX5" y que cada vez que copie la fila con sus casillas de verificación y la inserte nuevamente en la fila que sea y las veces que sea, me guarde el vínculo correspondiente a su numero de fila, es decir, si copio la fila 5 y la pego en la 6, la fila 5 guardará sus vínculos "AW5 y AX5" y la fila 6, el "AW6 y AX6" y así sucesivamente. Alguien sabría indicarme el código VBA necesario.

1 respuesta

Respuesta
1

Te anexo la macro. Previamente deberás tener 2 casillas de verificación en la fila 5.

Ahora debes seleccionar la fila en donde quieres copiar las casillas de verificación y ejecutar la macro. Ejemplo de casillas:


Sub CopiarCasillas()
'Por.Dante Amor
    f = ActiveCell.Row
    uno = True
    If f < 6 Then
        MsgBox "No puedes copiar en esa fila, tiene que ser superior a 6"
        Exit Sub
    End If
    Rows("5:5").Copy Range("A" & f)
    Set rango = Rows(f)
    For Each d In ActiveSheet.DrawingObjects
        If Not Intersect(d.TopLeftCell, rango) Is Nothing And _
           Not Intersect(d.BottomRightCell, rango) Is Nothing Then
            d.Select
            If uno Then
                Selection.LinkedCell = "AW" & f
                uno = False
            Else
                Selection.LinkedCell = "AX" & f
            End If
        End If
    Next
End Sub

Saludos.Dante Amor

Mil gracias Dante, he ejecutado tal y como me indicas la macro y tiene algún problema, cuando ejecuto la macro me copia los campos correspondientes a los vínculos tal y como quiero pero lo que no hace es copiar las casillas de verificación correspondientes a esos vínculos en la fila que me indicas. Es decir, no me copia las casillas pero si los vínculos en las columnas que te indiqué.

Te explico como lo he hecho, he creado una hoja más donde he creado un botón al que le he asignado la macro que me has mandado. He insertado en esta nueva hoja 2 casillas de verificación en las celdas B5 y D5. Además he vinculado estas celdas a AW5 y AX5 respectivamente, una vez asignada la macro al botón me copia un nuevo registro donde me posiciono con las celdas activas, pero no me copia y pega las casillas de verificación en esa fila, luego los vínculos pegados no se pueden controlar al no tener una casilla de verificación asignada.

En mi libro excel, el funcionamiento que busco y que he conseguido hasta ahora es el siguiente: Hoja "Reservas", en esta hoja tomo los datos de reserva de productos de un Cliente, tengo una macro asignada a un botón que cuando la activo, pasa automáticamente a otra hoja denominada "Datos Cliente", donde introduzco los datos personales del cliente y recojo automáticamente los datos de reserva de producto de la hoja anterior, igualmente tiene un botón con macro asignada "Guardar" que sirve para duplicar esta hoja creando una nueva en el mismo  libro, situadad siempre al final del libro, además me renombra la la hoja con el nombre del Cliente. En esa hoja se copian todos los datos y se vuelven a pegar  como valores para que no se modifiquen cuando vuelva a modificar la hoja "Reservas". Además cuando activo la macro guardar, me guarda un registro en una tercera Hoja "Seguimiento Clientes" con los datos personales y resumen de reserva en la línea B5. En esta línea es donde tengo las dos casillas de verificación pegadas en las ubicaciones AS5 y AU5, tambien tengo una macro que inserta una nueva linea, siempre en la fila 16, donde me pone copiados los datos del registro de la fila 5, de esta forma cuando cambien los datos en el registro de la fila 5, no me modificará los datos que inserte nuevamente en la fila 16, cuando vuelvo a activar la macro "insertar linea" Hoja "Seguimiento Clientes", la 16 pasa a una posición inferior y me vuelve a insertar en la 16 los nuevos datos. Es aquí donde necesito que me copie las casillas de verificación y me cambie automáticamente el vínculo de la fila 16 y además de todos los registros que pasan a posiciones inferiores, por debajo de la fila 16 (17, 18,etc).

Por ello he realizado esta consulta. Te agradecería mucho si puedes explicarme un poco más el código que me diste o el nuevo para que pudea entender el proceso que seguirá la macro. Muchas gracias de antemano.

Envíame tu archivo para revisarlo. Con imágenes me explicas cómo está tu hoja antes de mi macro y con otra imagen me pones cómo debería quedar.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Miguel Angel Franco” y el título de esta pregunta.

Hola Dante, acabo de enviarte por correop el fichero y las imágenes, espero que te sirvan de ayuda.

Gracias por todo.

Ya revisé el archivo y el detalle es que comentaste que tienes "casillas de verificación" y en realidad tienes "checkbox de control activex", entre uno y otro, existen diferencias para copiar y para vincular la celda.

Pero le hice ajustes a tus casillas y ya funciona, también le detalle algo a la macro.

Sub CopiarCasillas()
'Por.Dante Amor
    f = ActiveCell.Row
    uno = True
    If f < 16 Then
        MsgBox "No puedes copiar en esa fila, tiene que ser superior a 15", vbExclamation
        Exit Sub
    End If
    If ActiveCell.Value <> "" Then
        MsgBox "No puedes copiar en esa fila, ya tiene valores", vbExclamation
        Exit Sub
    End If
    '
    Rows("4:4").Copy Range("A" & f)
    Set rango = Rows(f)
    For Each d In ActiveSheet.DrawingObjects
        If Not Intersect(d.TopLeftCell, rango) Is Nothing And _
           Not Intersect(d.BottomRightCell, rango) Is Nothing Then
            d.Select
            If uno Then
                Selection.LinkedCell = "AW" & f
                uno = False
            Else
                Selection.LinkedCell = "AX" & f
            End If
        End If
    Next
    Range("A" & f).Select
End Sub

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “” y el título de esta pregunta.

Sigue sin copiarme los checkBox, no sé si tengo que sustituir estos por  casillas de verificación. Por favor, ¿me puedes mandar por correo electrónico el mismo archivo excel funcionando con tu macro para que yo lo vea?.  

He probado a cambiar los checkBox por casillas de verificación en el mismo archivo que te mandé y me las copia junto con las líneas, lo que no hace es vincularlas correctamente con sus casillas correspondientes de la fila a la que corresponden cada una, es decir fila 16, 17, 18, etc. Sabes si eso se puede solucionar y además hacer que se posicione como celda activa en la primera celda en blanco que este por debajo del ultimo registro, para evitar el tener que posicionarse manualmente con el ratón.

Como te comenté tiene que funcionar con casillas de verificación.

Te envié nuevamente el archivo, se llama:

HOJA DE PRUEBA dam2

Saludos. Dante Amor

Recuerda valorar la respuesta.

En el archivo que te envié las casillas van dentro de la fila.

Recuerda los comentarios que te puse, la casilla debe ir dentro de la fila, de lo contrario no realizará la vinculación correcta. No reduzcas el tamaño de la fila.

Con gusto te ayudo para que busque la última fila y haga la copia de todo, pero antes revisa el archivo dam2 y dime si ya te está copiando correctamente las casillas y la vinculación.

Valora esta pregunta y crea una nueva para poner las casillas en la última fila

Si señor!!, era el tamaño de altura de la fila, eres un crack!!. Te voy a pedir un último favor si se puede, sería posible que insertara automáticamente las filas a partir de la fila 16 sin tener que posicionarse con el ratón, es decir que me inserte la primera línea en la 16, la segunda en la 16 y así sucesivamente, quedando los registros más antiguos por debajo de la fila 16. Sería una forma de evitar tener que posicionarse en ningún lugar de la hoja.

Muchas gracias.

Ya tengo listo el cambio a la macro, solamente crea una nueva pregunta en el tema de excel para enviarte la macro con la nueva petición.

Si lo deseas, al final del título de la nueva pregunta puedes poner que va dirigida a Dante Amor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas