Vincular una casilla de verificación con una celda en VBA

drannok -  
Pyvoudelet Mensajes publicados 169 Fecha de registro   Estado Miembro Última intervención   -
Hola a todos,

mi pregunta seguramente parecerá evidente para la mayoría de ustedes, pero... siendo principiante en VBA, ¡me animo!

Aquí está mi problema:
He creado un cuadro de diálogo a través de un userform en VBA.
En este userform he planteado 2 preguntas e insertado dos casillas de verificación (Si están marcadas, significa que la respuesta a la pregunta correspondiente es "sí")
Me gustaría vincular cada una de estas casillas de verificación a una celda (digamos A1 para la Checkbox 1 y A2 para la Checkbox 2). Así, el usuario podrá regresar al cuadro de diálogo más tarde, pero sus respuestas anteriores seguirán marcadas...

¿Alguien tiene una solución para mi problema? ¿He encontrado la función linkedcell, pero no sé cómo usarla... por favor!

3 respuestas

  1. gbinforme Mensajes publicados 14930 Fecha de registro   Estado Colaborador Última intervención   4 744
     
    hola

    Para que esto funcione, necesitas poner un poco de código en tu userform, esto por ejemplo:

     Private Sub UserForm_Initialize() If Range("A1").Value = "sí" Then CheckBox1.Value = True Else CheckBox1.Value = False End If If Range("A2").Value = "sí" Then CheckBox2.Value = True Else CheckBox2.Value = False End If End Sub Private Sub CheckBox1_Click() If CheckBox1.Value Then Range("A1").Value = "sí" Else Range("A1").Value = "no" End If End Sub Private Sub CheckBox2_Click() If CheckBox2.Value Then Range("A2").Value = "sí" Else Range("A2").Value = "no" End If End Sub 

    Cuando inicias tu formulario, las casillas de verificación toman el valor de las celdas y cuando marcas o desmarcas, tus celdas se actualizan.
    --

    Siempre zen
    3
  2. drannok
     
    ¡Muchas gracias!
    ¡No había pensado en esa solución en absoluto!
    Desafortunadamente, no podré probarlo hasta el lunes en el trabajo... (bueno, no me voy a quejar, ¡es fin de semana!)

    Sin embargo, me pregunto:
    ¿Dónde escribes esto:
    Private Sub UserForm_Initialize()
    ¿En el código del userform? ¿Es posible eso? (si hago clic en la checkbox, escribo en el código de la checkbox, pero no recuerdo si puedo hacer lo mismo para el userform).
    0
    1. gbinforme Mensajes publicados 14930 Fecha de registro   Estado Colaborador Última intervención   4 744
       
      Re

      Todo esto está efectivamente en el código del formulario de usuario que incluye el código asociado a cada objeto componente del formulario. También tendrás tu código para los botones (validar o salir, por ejemplo).

      Por lo tanto, puedes copiar y pegar el total para ver cómo funciona, si tienes los mismos nombres, por supuesto.
      0
    2. drannok
       
      ¡Gracias!
      0
  3. Pyvoudelet Mensajes publicados 169 Fecha de registro   Estado Miembro Última intervención   12
     
    Haz clic derecho en tu checkbox, "Formato de control", pestaña "Control" y especifica la celda que deseas asociar a esta checkbox.

    Así, en esta celda se mostrará el valor "Verdadero" o "Falso" dependiendo de si la casilla está marcada o no.

    Podrás utilizar este valor en cualquier fórmula. Si no deseas que el valor aparezca, escríbelo en blanco sobre un fondo blanco.

    ¡Y voilà! Un poco más fácil que una macro. Pero no sé si eso te conviene.
    0
    1. gbinforme Mensajes publicados 14930 Fecha de registro   Estado Colaborador Última intervención   4 744
       
      Hola,

      Olvidaste esto: He creado un cuadro de diálogo a través de un UserForm en VBA. y tu función no se aplica a las casillas de verificación en un UserForm.
      0
    2. Pyvoudelet Mensajes publicados 169 Fecha de registro   Estado Miembro Última intervención   12
       
      ¡Efectivamente! Disculpa la intrusión.
      0