Msgbox que permita modificar los datos del excel

Hola buenas.

Mi pregunta es sencilla de plantear. Quisiera que, durante la ejecución de una macro si se cumplen ciertos requisitos, salte un msgbox y avise de que algo esta mal. El usuario debería cambiar los datos erróneos y, posteriormente se continuaría la ejecución normal de la macro. Esto puede hacerse? Es decir, mantener el msgbox abierto y que el usuario modifique dichos datos y, al darle a aceptar al msgbox se retome por el mismo lugar la ejecución?

Muchas gracias a todos!!

1 Respuesta

Respuesta
1

No es posible mantener el msgbox abierto y que continue el proceso.

Si está dentro de un proceso que devuelve valores tendrás que mostrar el msg con 2 opciones (si-no, aceptar-cancelar) y según eso ir a otra parte del codigo (goto ...)

Si estás tratando de controlar el ingreso de algún dato en un control tipo Textbox es otro el procedimiento.

Confirmame si se trata de esto último y te paso una rutina de ejemplo.

Gracias Elsa. Que rapidez!! je je.

Lo que hace el msgbox (bueno lo que ideaba) era que detectara un dato erróneo, duplicado, o contradictorio y que avisara. Por tanto tendré que acudir a un formulario.

Eso sí, y aunque sea desviar un poco el tema. Si me creo un formulario para que haga las veces de msgbox, me gustaría ponerle una leyenda que muestre en que hoja encontró el dato erróneo. Podría hacerlo? Me refiero que al hacer la llamada, por ejemplo: "frm1.show" podría pasarle de algún modo la cadena de caracteres que quisiera que mostrara el frm1, por ejemplo: "Dato mal colocado en hoja 1"

De nuevo muchas gracias!

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas