¿Cómo se corre un checkbox correctamente?

Me gustaría saber por que cuando corro un checkbox en modo -"Modules", "Module 1"-

Me marca el error - "Run-time error '424' Object requerid"-

Y solo cuando esta en modo - "Microsoft Excel Obejcts", "Sheet1"-

con un -"Private Sub CheckBox1_Click()                  End Sub"

no me genera ningun error

¿Esto Por qué sucede?, ¿Cómo se puede solucionar?

1 respuesta

Respuesta
1

H o  l a:

No pusiste en cuál línea de la macro se detiene.

Tampoco indicas si es un checkbox de Form o de ControlActiveX.

Voy a suponer que es de ControlActiveX y que el checkbox está en la hoja "Hoja1"


Cuando vas a utilizar un control que se encuentra en una hoja, le tienes que indicar a cuál hoja pertenece, por eso te envía el mensaje:


Si ejecutas algo como esto:

Sub MostrarMsg()
    If CheckBox1.Value Then
        MsgBox "si"
    Else
        MsgBox "no"
    End If
End Sub

Te va a enviar el error: "Se requiere un objeto"


Ahora si le indicas el objeto Sheet, poniendo sheets("Hoja1"), quedaría así:

Sub MostrarMsg()
    If Sheets("Hoja1").CheckBox1.Value Then
        MsgBox "si"
    Else
        MsgBox "no"
    End If
End Sub

De esa forma se está indicando que el checkbox pertenece al objeto sheet y que se encuentra en la hoja con el nombre "Hoja1", si es otra hoja, cambia "Hoja1" por el nombre de la hoja.


La otra incógnita es, si ejecutas el código en dentro de "Microsoft Excel Obejcts", "Sheet1"-, no te envía error.

No te envía el error, porque VBA asume que estás utilizando los componentes del objeto Hoja en la cual estás ejecutando el código, entonces podrías tener esto dentro del código de la hoja:

Private Sub CheckBox1_Click()
    If CheckBox1.Value Then
        MsgBox "Si"
    Else
        MsgBox "No"
    End If
End Sub

O podrías poner esto:

Private Sub CheckBox1_Click()
    If ActiveSheet.CheckBox1.Value Then
        MsgBox "Si"
    Else
        MsgBox "No"
    End If
End Sub

Incluso:

Private Sub CheckBox1_Click()
    If Sheets("Hoja1").CheckBox1.Value Then
        MsgBox "Si"
    Else
        MsgBox "No"
    End If
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas