Casilla de verificación en excel

Hay alguna manera posible para que al insertar varias casillas de verificación en excel en desarrollador estas cojan como vinculo directamente la columna que yo indique en su misma fila?

Estoy haciendo un excel que contiene cientos de casillas de verificación e ir una por una a Formato de control-vincular y seleccionar manualmente no es una buena opción ya que me pasaría una semana haciéndolo.

Imagino que debe haber alguna forma automética para que cada casilla de verificación que introduzca en la columna D por ejemplo, se vincule directamente con su correspondiente en la misma fila de la columna I sin tener que ir una a una a editarla.

1 Respuesta

Respuesta
1

Podría hacerse con estas opciones.

Opción 1, que una macro genere todas las casillas de verificación y las vincule (recomendado)

Opción 2, que una macro lea las casillas que ya existen y por la fila en la que se encuentra, vincular. Te comento lo de "por la fila en la que se encuentre", ya que una casilla no pertenece a una fila, está como "flotando" en la hoja de excel y lo que se puede hacer es verificar en qué posición (en pixeles) se encuentra de la fila más cercana.

Importante:

También me dices si son casillas de Formulario o casillas de ControlActiveX.

¿Eso me lo imaginaba pero conoces alguna macro que pueda usar para ello?

Gracias

Perdona son casillas de formulario

Tendría que desarrollar la macro a tus necesidades.

Envíame un ejemplo de cómo quieres esas casillas.

Lo que haría la macro es generar el número de casillas que requieras.

Me tienes que decir, en cuál columna las quieres, a partir de cuál fila, a cuál celda se deben vincular, el tamaño que deben tener.

Con 2 o 3 ejemplos que pongas es suficiente.

Mi correo [email protected]

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

S a l u d o s . D a n t e   A m o r

Te anexo de una vez la macro.

Cambia en la macro estos datos:

Col = "D" 'Columna casillas, aquí va la columna en donde va la casilla
vin = "I" 'Columna vincular, columna donde va la vinculación
'
For i = 2 To 10, cambia el 2 por la fila inicial, cambia el 10 por la fila final

Sub CrearCasillas()
'Por.Dante Amor
    col = "D"   'Columna casillas
    vin = "I"   'Columna vincular
    '
    For i = 2 To 10
        xl = Cells(i, col).Left
        xt = Cells(i, col).Top
        xw = Cells(i, col).Width
        xh = Cells(i, col).Height
        '-
        ActiveSheet.CheckBoxes.Add(xl, xt, xw, xh).Select
        With Selection
            .Caption = ""
            .Value = xlOff
            .LinkedCell = "I" & i
            .Display3DShading = False
        End With
    Next
End Sub

En una hoja nueva ejecuta la macro.

Sigue las Instrucciones para ejecutar la macro

  1. Abre tu archivo de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Para ejecutarla presiona F5


S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

Hola Dante,

Te he enviado un email con toda la información, tal como te indico no es imprescindible y no querría complicarte demasiado la vida, si lo ves muy laboroso dejalo estar.

De cualquier forma estoy muy agradecido ya a estas alturas por tu interés.

Saludos

Esta es la macro para crear las casillas y vincularlas

Sub CrearCasillas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    ActiveSheet.DrawingObjects.Delete
    '
    For j = Columns("D").Column To Columns("H").Column
        For i = 6 To Range("C" & Rows.Count).End(xlUp).Row
            If Cells(i, "C") <> "" And IsDate(Cells(i, "C")) Then
                dia = Format(Cells(i, "C"), "ddd")
                wsl = Cells(i, j).Left + 25
                wst = Cells(i, j).Top
                wsw = Cells(i, j).Width
                wsh = Cells(i, j).Height
                '
                'c = Cells(3, Columns.Count).End(xlToLeft).Column + 1
                letra = Evaluate("=SUBSTITUTE(ADDRESS(1," & j + 5 & ",4),""1"","""")")
                ActiveSheet.CheckBoxes.Add(wsl, wst, wsw, wsh).Select
                With Selection
                    .Caption = dia
                    .Value = xlOff
                    .LinkedCell = letra & i
                    .Display3DShading = False
                End With
            End If
        Next
    Next
End Sub

S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

¡Gracias!

INCREÍBLE Funciona, he podido seguir y me ha quedado genial una vez añadidas otras cosas, de veras que tenia en mente tras sacarme ese muerto, MUCHAS GRACIAS

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas