Saltar al contenido

Macro que no se detenga si falta información.


Recommended Posts

publicado

Buenas tardes, me gustaría saber si me pueden ayudar con la siguiente macro, todos los días recibo un archivo con los datos de unos ACTIVOS que son colocados en diferentes hojas dependiendo del activo (ACTIVO1, ACTIVO2,…ACTIVOn), es decir, hay una hoja para cada activo. Hice una macro en el archivo "DATOS DEL SIAR PARA ESTIMACION DEL C-VaR y EVT.xls" con la intención de extraer solo el rango que me interesa el cual es fijo para cada activo ("B4:B23"). La macro me funciona bien pero tengo el problema que no siempre hay información para algún activo en particular, y yo hice la macro considerándolos todos. Por ejemplo, si el día de mañana no hay información para el ACTIVO3 esa hoja no va a estar en el archivo que recibo, por lo que, me genera un error de depuración y se detiene sin completar la rutina, no me pega nada.

Mi pregunta es: existe alguna forma de decir en la macro, que si una hoja determinada no está continúe el proceso, que no se detenga y pegue el resto de las hojas que si tienen información, es decir que completa la rutina con los activos que si aparecen en el archivo y que no se detenga porque falta alguno en particular.


Windows("SALIDAS SIMULACIONES DEL VaR.xls").Activate
Sheets("ACTIVO1").Select
Range("B4:B23").Select
Selection.Copy
Windows("DATOS DEL SIAR PARA ESTIMACION DEL C-VaR y EVT.xls").Activate
Range("B2").Select
ActiveSheet.Paste
Windows("SALIDAS SIMULACIONES DEL VaR.xls").Activate
Sheets("ACTIVO2").Select
Range("B4:B23").Select
Application.CutCopyMode = False
Selection.Copy
Windows("DATOS DEL SIAR PARA ESTIMACION DEL C-VaR y EVT.xls").Activate
Range("C2").Select
ActiveSheet.Paste
Windows("SALIDAS SIMULACIONES DEL VaR.xls").Activate
Sheets("ACTIVO3").Select
Range("B4:B23").Select
Application.CutCopyMode = False
Selection.Copy
Windows("DATOS DEL SIAR PARA ESTIMACION DEL C-VaR y EVT.xls").Activate
Range("D2").Select
ActiveSheet.Paste
Windows("SALIDAS SIMULACIONES DEL VaR.xls").Activate
ActiveWindow.ScrollWorkbookTabs Sheets:=-3
Sheets("ACTIVO4").Select
Range("B4:B23").Select
Application.CutCopyMode = False
Selection.Copy
Windows("DATOS DEL SIAR PARA ESTIMACION DEL C-VaR y EVT.xls").Activate
Range("E2").Select
ActiveSheet.Paste[/CODE]

Agradeciéndoles de antemano su ayuda quedo a la espera de su siempre oportuna respuesta,

Saludos cordiales.

publicado

hola sadeliano

lo ideal es que modificaras tu macro para que se ajustara a tus requerimientos, pero si lo que deseas es controlar el error puedes hacer lo siguiente

On Error GoTo Error
'<==================== código
'<==================== código
'<==================== código
'<==================== código aqui te marca error
'<==================== código
'<==================== código
continua: ' <=========aqui le dices que continue
'<==================== código
Exit Sub
Error:
Resume continua
End Sub[/CODE]

saludos

publicado

Disculpa pero detecte una falla en lo que me recomendaste, ya que funciona bien pero si llegase a faltar otro activo en el archivo origen, esta macro solo funciona para el activo que definí con la sentencia continua:, cómo hago si en vez de un activo son dos o más, la idea es que la rutina continúe independientemente si hay o no información para un activo determinado, y si al día siguiente vuelve a salir información para ese activo tome el rango y lo pegue en el archivo destino siempre en la misma columna que he destinada para ese activo.

Me explico mejor, yo recibo un archivo un libro origen:

SALIDAS SIMULACIONES DEL VaR.xls

con varias posibles hojas ACTIVO1, ACTIVO2, ACTIVO3, ACTIVO4 ... ACTIVOn pudiendo faltar uno o varios de ellos.

En el código paso una por una por esas hojas copiando la columna B3:B24 de cada hoja para pegarla en otro libro destino

DATOS DEL SIAR PARA ESTIMACION DEL C-VaR y EVT.xls donde voy pegando de manera continúa en las celdas B2, C2, D2 y E2 que ha sido identificada con el nombre de cada activo del archivo origen si faltara una de las hojas ACTIVOx se detendría el proceso,

Si algún activo no muestra información para un día en particular esa hoja no estará en el archivo origen y la rutina se detiene, hice lo que me recomendaste y puse la sentencia en donde estaba el activo que faltaba y el corre bien pero si faltara otro activo no lo hace. Qué hace falta para que no se detenga y copie los datos independientemente si falta información para más de un activo, la idea es que si no hay salte al siguiente activo que si tiene y asi hasta completar todos los activos que muestren información.

Disculpa las molestias y espero me puedan ayudar.

Saludos cordiales

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.