Tengo el siguiente código para una casilla de verificación (control ActiveX) con Excel 2013:

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
    CheckBox2.Value = False
Else
    CheckBox2.Value = True
End If
End Sub

Private Sub CheckBox2_Click()
If CheckBox2.Value = True Then
    CheckBox1.Value = False
Else
    CheckBox1.Value = True
End If
End Sub

Lo que hace es simplemente desmarcar la casilla 2 si marco la casilla 1, y viceversa. Pero si uso el código anterior para una casilla de verificación (control de formulario), aparece el mensaje de error "Error en tiempo de ejecución '424': objeto requerido". ¿Alguien sabe de una solución?

ACTUALIZACIÓN: El mismo código anterior que intenté usar en un archivo que obtuve de Bytes de alguna manera funcionó. Como soy un novato en VBA, creo que tendré que sentarme y estudiar cómo funcionan juntos Excel, Macros y VBA. Una vez que descubra la fuente del problema (que técnicamente yo mismo creé), publicaré una respuesta aquí sobre cómo lo descubrí. Gracias a todos los que publicaron comentarios y respuestas. ¡Realmente lo aprecio!

0
Jay Lee 20 feb. 2017 a las 19:52

2 respuestas

Utiliza el detector de eventos incorrecto. Prueba esto

Private Sub CheckBox1_Change()
    If CheckBox1 = True Then
        CheckBox2 = False
    Else
        CheckBox2 = True
    End If        
End Sub

Aquí está la lista de oyentes de eventos para la casilla de verificación ingrese la descripción de la imagen aquí

0
Rosetta 20 feb. 2017 a las 17:05

Se refiere a un control de formulario por nombre o índice en la colección Casillas de verificación:

Activesheet.CheckBoxes(1).Value

Por ejemplo.

0
Rory 20 feb. 2017 a las 17:03