Como ejecutar un VBA en un CheckBox

Tengo la siguiente duda, en este Form llamado “Orden de Trabajo” tengo un CheckBox (ARCHIVAR_chec) y un TextBox (fechaEntregTXT):

Debe en funcionar de la siguiente manera, cuando marque el Check si no se ha introducido una fecha de Entrega, el sistema debe devolver un MsgBox avisándolo, si ya se introdujo la fecha entonces un MsgBox (con opción OK/Cancel) avisando que al archivar la OT no podrá volver a editar la misma. Si marca OK entonces se debe cerrar el Form guardando los datos, si marca Cancel se debe quedar abierto el Form, y el Chec volver a su estado original (ARCHIVAR_chec = False). El problema es que no logro que los botones hagan lo que necesito (especialmente el de Cancel) he probado hacerlo con un From tipo Modal y Botones con Macros, y también con el siguiente condigo en el evento OnClick del ChechBox, pero en ninguno de los dos casos logro hacer que al marcar Cancel quede abierto el Form, y el Chec vuelva a su estado original.
¿Cómo pudiera solucionarlo?

Private Sub ARCHIVAR_chec_Click()
If (IsNull(fechaEntregTXT)) Then
            Beep
            MsgBox "Primero debe añadir una Fecha de Entrega", vbInformation, "ATENCIÓN"
        Else
            Beep
            MsgBox "Si Archiva la Orden de Trabajo no podra volver a modificarla", vbOKCancel, "ATENCIÓN"
           
            If vbCancel = True Then
            ARCHIVAR_chec = False
            End If
           
            If vbOK = True Then
            DoCmd.Close acForm, "ORDEN DE TRABAJO"
            End If
           
        End If
End Sub

1 Respuesta

Respuesta
1

Así como esta no se esta condicionando. Debe ser

If MsgBox ("Si Archiva la Orden de Trabajo no podra volver a modificarla", vbOKCancel, "ATENCIÓN"=vbCancel) Then

    ARCHIVAR_chec=False

Else

DoCmd.Close acForm, "ORDEN DE TRABAJO"

End if

¡Gracias! Ya  lo apliqué y me funcionó. Solo tuve que añadirle dos paréntesis más de esta manera y trabajo como quería.

If (MsgBox ("Si Archiva la Orden de Trabajo no podra volver a modificarla", vbOKCancel, "ATENCIÓN") = vbCancel) Then

Muy bien así es

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas