Vincular una casilla de verificación con una celda en VBA
drannok
-
Pyvoudelet Mensajes publicados 169 Fecha de registro Estado Miembro Última intervención -
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!
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
-
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 -
¡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).-
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. -
-
-
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.