Detener una macro si la celda está vacía
Resuelto
Dimitri020386
Mensajes publicados
5
Estado
Miembro
-
Dimitri020386 Mensajes publicados 5 Estado Miembro -
Dimitri020386 Mensajes publicados 5 Estado Miembro -
Hola a todos,
Me he puesto a programar en VBA en Excel desde el año pasado para la creación de un archivo de seguimiento financiero.
He finalizado una primera vez este archivo, pero he empezado de nuevo con todas las macros de este archivo para simplificarlo ya que tenía demasiadas manipulaciones que hacer antes de ejecutar la macro de actualización.
He buscado en vano las líneas de código que debo integrar al inicio de mi macro (quizás no he buscado en el lugar correcto)
Aquí está mi problema:
Debo copiar para 7 hojas diferentes las celdas no vacías situadas entre "M8" y "N38" hacia las celdas situadas después de las últimas celdas no vacías de las columnas "B" y "C"
Con eso me arreglo.
Antes de copiar estas celdas, deseo detener la ejecución de la macro si al menos una de las celdas "M8:N8" en al menos una hoja está vacía.
Y de paso, mostrar una ventana de advertencia con un mensaje.
Si todas las celdas "M8:N8" están no vacías, por supuesto, quiero continuar con la ejecución de mi macro.
Espero haber sido lo suficientemente claro en mis explicaciones.
Si no es así, intentaré aclarar los puntos oscuros.
Gracias de antemano a las personas que tomen su tiempo para leer y ayudarme a resolver este problema.
Dimitri
Me he puesto a programar en VBA en Excel desde el año pasado para la creación de un archivo de seguimiento financiero.
He finalizado una primera vez este archivo, pero he empezado de nuevo con todas las macros de este archivo para simplificarlo ya que tenía demasiadas manipulaciones que hacer antes de ejecutar la macro de actualización.
He buscado en vano las líneas de código que debo integrar al inicio de mi macro (quizás no he buscado en el lugar correcto)
Aquí está mi problema:
Debo copiar para 7 hojas diferentes las celdas no vacías situadas entre "M8" y "N38" hacia las celdas situadas después de las últimas celdas no vacías de las columnas "B" y "C"
Con eso me arreglo.
Antes de copiar estas celdas, deseo detener la ejecución de la macro si al menos una de las celdas "M8:N8" en al menos una hoja está vacía.
Y de paso, mostrar una ventana de advertencia con un mensaje.
Si todas las celdas "M8:N8" están no vacías, por supuesto, quiero continuar con la ejecución de mi macro.
Espero haber sido lo suficientemente claro en mis explicaciones.
Si no es así, intentaré aclarar los puntos oscuros.
Gracias de antemano a las personas que tomen su tiempo para leer y ayudarme a resolver este problema.
Dimitri
7 respuestas
Hola,
hay que poner
Eso es todo lo que puedo decirte, ¡sin archivo ni código a la vista!
--
Piensa en el "gracias" y en el "resuelto" cuando el tema lo esté.
hay que poner
exit subdespués de la parte de la macro que verifica que no haya celdas vacías.
Eso es todo lo que puedo decirte, ¡sin archivo ni código a la vista!
--
Piensa en el "gracias" y en el "resuelto" cuando el tema lo esté.
Hola,
confirmo, imposible responder correctamente sin un archivo de trabajo.
No sabemos si son valores o fórmulas. Si una celda vacía está realmente vacía (sin fórmula), o si "" debe considerarse como vacía, y así sucesivamente...
cjoint.com y pegar aquí el enlace proporcionado
eric
--
Al intentarlo continuamente, al final lo logramos.
Así que cuanto más falla, más posibilidades hay de que funcione. (los Shadoks)
Además del agradecimiento (sí, sí, ¡eso se hace!), no olvides marcarlo como resuelto. Gracias
confirmo, imposible responder correctamente sin un archivo de trabajo.
No sabemos si son valores o fórmulas. Si una celda vacía está realmente vacía (sin fórmula), o si "" debe considerarse como vacía, y así sucesivamente...
cjoint.com y pegar aquí el enlace proporcionado
eric
--
Al intentarlo continuamente, al final lo logramos.
Así que cuanto más falla, más posibilidades hay de que funcione. (los Shadoks)
Además del agradecimiento (sí, sí, ¡eso se hace!), no olvides marcarlo como resuelto. Gracias
OK entiendo.
Aquí está el enlace a mi archivo:
https://www.cjoint.com/c/JJqlFZOkhFJ
He tomado nota sobre el <negrita>exit sub (Gracias Yoyo01000)
Confirmo que las celdas estarán completamente vacías, sin ninguna fórmula en ellas.
Aquí está el enlace a mi archivo:
https://www.cjoint.com/c/JJqlFZOkhFJ
He tomado nota sobre el <negrita>exit sub (Gracias Yoyo01000)
Confirmo que las celdas estarán completamente vacías, sin ninguna fórmula en ellas.
Supuse que tus pestañas eran las 7 últimas, podrías haberlo precisado...
Si estas pestañas son siempre consecutivas, añade un nombre con la siguiente fórmula:
Esto calcula el número de entradas entre estas 2 hojas (incluidas).
En caso de evolución, solo tendrás que modificar esta fórmula.
En el código:
Si estas hojas están sujetas a cambios, podría ser interesante crear una hoja Inicio, otra Fin (adaptar la fórmula) e insertar/eliminar entre las dos sin olvidar ajustar el número de entradas deseado en la fórmula.
eric
--
Al intentar continuamente, uno termina logrando.
Así que cuanto más falla, más posibilidades hay de que funcione. (los Shadoks)
Además de dar las gracias (¡sí, sí, eso se hace!), piensa en marcar como resuelto. Gracias
Si estas pestañas son siempre consecutivas, añade un nombre con la siguiente fórmula:
=NBVAL('Data Mon épargne:Data ACTIONS EDF'!$M$8:$N$8)=14 Esto calcula el número de entradas entre estas 2 hojas (incluidas).
En caso de evolución, solo tendrás que modificar esta fórmula.
En el código:
If Not [saisiesOK] Then Exit Sub
Si estas hojas están sujetas a cambios, podría ser interesante crear una hoja Inicio, otra Fin (adaptar la fórmula) e insertar/eliminar entre las dos sin olvidar ajustar el número de entradas deseado en la fórmula.
eric
--
Al intentar continuamente, uno termina logrando.
Así que cuanto más falla, más posibilidades hay de que funcione. (los Shadoks)
Además de dar las gracias (¡sí, sí, eso se hace!), piensa en marcar como resuelto. Gracias
Gracias Eric,
Efectivamente, se me pasó mencionarlo, mis disculpas.
Acabo de hacer una prueba, no entiendo mucho porque he probado lo que me diste:
"NBVAL("Data Mon épargne:Data ACTIONS EDF" & "M8:N8") = 14
If Not NBVAL Then Exit Sub"
No funcionó, así que intenté una modificación porque Visual Basic no acepta los " ' " y el " ! ".
Así que escribí lo siguiente, pero creo que cometí (uno o varios) errores en la redacción de mi código.
extractionOK = NBVAL("Data Mon épargne:Data ACTIONS EDF" & "M8:N8") = 14
If Not extractionOK Then Exit Sub
La macro se bloquea en "NBVAL"
Recibo un mensaje de error que dice:
"Error de compilación:
Sub o función no definida"
¿Puedes decirme qué está mal?
Estoy en Microsoft Visual Basic 7.1, ¿es posible que algunas funciones sean compatibles solo con ciertas versiones de Visual Basic?
Y de paso, soy nuevo en los foros, ¿cómo se hace para integrar en un cuadro las líneas de código VBA?
Dimitri
Efectivamente, se me pasó mencionarlo, mis disculpas.
Acabo de hacer una prueba, no entiendo mucho porque he probado lo que me diste:
"NBVAL("Data Mon épargne:Data ACTIONS EDF" & "M8:N8") = 14
If Not NBVAL Then Exit Sub"
No funcionó, así que intenté una modificación porque Visual Basic no acepta los " ' " y el " ! ".
Así que escribí lo siguiente, pero creo que cometí (uno o varios) errores en la redacción de mi código.
extractionOK = NBVAL("Data Mon épargne:Data ACTIONS EDF" & "M8:N8") = 14
If Not extractionOK Then Exit Sub
La macro se bloquea en "NBVAL"
Recibo un mensaje de error que dice:
"Error de compilación:
Sub o función no definida"
¿Puedes decirme qué está mal?
Estoy en Microsoft Visual Basic 7.1, ¿es posible que algunas funciones sean compatibles solo con ciertas versiones de Visual Basic?
Y de paso, soy nuevo en los foros, ¿cómo se hace para integrar en un cuadro las líneas de código VBA?
Dimitri