Ayuda con macro que active otra macro

Buenas tardes,

estoy intentando montar un código para que active otra macro y no logro sacarlo.

El código tendría que hacer lo siguiente;

- Comprobar si en la hoja1 con nombre "FACTURA", en la celda A23 hay un 0.

- Si hay un 0, que ejecute una macro que se llama " Sub Graba" que está asociada a esta misma hoja "Factura". Y finalice

- Si no hay 0, que escriba un 1 en la celda A24 de esta misma hoja y lance un Msgbox con el texto " ERROR EN DATOS" un sólo botón de aceptar, y finalice la macro sin ejecutar nada.

Tengo trozos por separado de cada cosa, pero no soy capaz de juntarlo todo bien.

Gracias por adelantado.

1 respuesta

Respuesta
1

¿El código solicitado estará dentro de otro código? Entonces estas son las líneas:

if sheets("FACTURA").RANGE("a23") = 0 THEN

   Call Graba

   'qué significa 'finalizar' ????    ... eso iría aquí

else

   sheets("FACTURA").RANGE("A24") = 1

MsgBox "ERROR EN DATOS"

End If

Falta que aclares qué hacer luego de llamar a la subrutina, cualquier duda me lo comentas.

Hola Elsa,

Gracias por tu ayuda, funciona bien, pero me lo he planteado mal ya que me deja el 1 fijo y no varía si lo hace a23, y lo gracioso es que tampoco quiero quiero que varíe... la cosa tendría que funcionar así;

El código no va dentro de otro de otro código, es decir hay que bautizarlo.

tendría que comprobar a23;

si a23 es 0, escribe 0 en a24 y ejecuta "Grabar". y ya está, finaliza (no hace más nada).

si a23 no és 0, escribe 1 en a24 y lanza el mensaje "error en datos" y finaliza.

Ya sé que podría poner una fórmula en a24 (=si), pero es una cosa rara, la celda a23 me indica fallos en el rellenado de la factura, y sólo quiero conocer su estado en un momento dado, por eso lo de esta macro. Es una especie de interruptor.

Gracias :)

Empecemos por el principio: ¿Cuándo se vá a ejecutar esta macro o estas instrucciones?

Hola Elsa,

Versión corta:

después de darles muchas vueltas, he visto la luz. Me vale perfectamente la primera macro que me has preparado.Muchas Gracias!

Versión completa (meramente prescindible):

Verás, tengo una macro ya echa "Graba" que graba los datos de la hoja 1 (factura) a la hoja 2 (Datos) almacenándolos en columnas y ordenándolos por fechas. La hoja factura tiene unos chivatos que comprueban errores al rellenar la factura (celdas vacías, fechas incorrectas, etc) y todos estos errores los recoge la celda a23. Si 1 error, si 0 todo correcto.

Y ligado a esta celda a23, tengo una línea donde sale el texto del error que extrae de un pequeño listado, con un =si + buscarv. Y esta línea además tiene formato condicional, si no hay errores fondo y letra negra (no se ve nada, ya que esta hoja es de fondo negro, y letra roja si hay errores).

El problema es que no quería que esos errores se mostraran mientras estas rellenando la factura, ya que no tiene sentido que empieces a rellenar la fecha y te salte el error de que te falta por rellenar lo que sea... por eso necesitaba esta nueva macro llemémosla "comprueba" que lo que hace es ver si hay errores (a23) y en función de eso, ó activa "Graba" (si no los hay) ó permite mostrar el error y no ejecuta Graba, para evitar que se graben facturas incompletas lo que me daría errores después al extraer información.

Tal como me lo has puesto, ya me sirve. Pues lo único que he de hacer es que la hoja que graba en el último paso me borre el 1 que pone esta nueva macro. Y así los errores sólo se muestran cuando quiero :). Todo esto también lo podía a ver echo con una macro que ya tuviera todos los avisos con mensajes msgbox, anidando varios " if.. then"... pero como no se le puede cambiar el diseño al cartelito (no me gusta), prefiero que funcione así.

Quizás debieras entonces luego de Call Graba agregar la línea para colocar un 1 a la A24, así queda claro el proceso en la misma macro y no te estás cuestionando si la otra limpia o no la celda A24.

Sdos y no olvides finalizar la consulta si el tema quedó cerrado.

Elsa

<a>http://aplicaexcel.galeon.com/manuales.htm</a>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas