No, no era esa la pregunta.
Mi rapidez no te debe contagiar (justo entró tu consulta en el momento en que pasaba x aquí, je je ). Uds deben leer y redactar las aclaraciones con más calma.
Preguntaba si tu proceso (ese que intentas controlar) se trataba de la carga de datos mediante un formulario, como x ej cuando llenamos un campo para el ingreso de una fecha y
Controlamos que sea fecha válida.
Por tus aclaraciones se trata de otro proceso. Entonces se trata de la 1er opción y debieras resolverlo así:
'... Durante la ejecución de una macro si se cumplen ciertos requisitos, salte un msgbox...
Aquí, justo en este momento de la macro, donde pensabas mostrar un msgbox, podes mostrarlo pero con la siguiente condición:
Si acepta el error y quiere modificarlo hay que desviarlo a otro sector de la macro
Y si decide continuar sin cambios el proceso continúa normalmente.
Obviamente no puedo precisar las instrucciones exactas desconociendo qué hace tu proceso, pero x ej sería así:
Sub Macro3()
'
'instrucciones de tu proceso, control, etc
'--------------------
Sino = MsgBox("No se cumplieron los requisitos en hoja... Si deseas arreglarlo presiona SI, si deseas continuar con el proceso sin cambios presiona NO", vbQuestion + vbYesNo, "ATENCIÓN")
'si contesta SI finaliza ESTE PROCESO para que haga las correcciones
If sino = vbYes Then
'aqui quizás debas retroceder algunas acciones (*)
Exit Sub
End If
'por no el proceso continua con lo que ya tenés programado
'--------------
End Sub
Observa que si cancelas para que el usuario arregle algunas cosas y luego vuelve a ejecutar este proceso, quizás repita pasos ya hechos... eso hay que manejarlo con cuidado. Por ej si primero graba un registro, luego hace las comparaciones, se cancela y vuelve a ejecutar estará grabando nuevamente.... esto debes revisarlo con cuidado.
Todos los controles tienen que ser antes de cualquier modificación.
Sdos
Elsa
http://aplicaexcel.galeon.manuales.htm