Macro que se repita hasta buscar en todas las páginas

Mi duda es la siguiente

Realizo una tarea de búsqueda por página y pego ese valor en un archivo lo cual ya tengo resuelto,

El detalle es la segunda parte ya que son varias páginas en las cuales debo realizar lo mismo,

Cómo puedo indicar en una macro que repita el proceso hasta haber analizado todas las páginas del libro? Y al final condense los resultados en una pagina?

Muchas Gracias

1 respuesta

Respuesta
1

Necesitas utilizar un bucle del tipo:

For each sh in activeworkbook.Sheets

sh.Select

'aquí irían tus líneas que ya tenés para encontrar el dato y copiarlo en otro destino

next sh

A tus instrucciones seguramente tendrás que agregarle una variable para indicar la fila de destino, algo como Cells(fila, 1) e ir incrementando con cada dato encontrado.

Si esto resolvió tu problema no olvides finalizar la consulta, sinó solicitá aclaraciones enviando la parte de la macro que ya tengas resuelta.

Buen Día

La tarea que tengo que hacer es copiar la última fila con valores de la hoja activa y eso pegarlo en una hoja final;

El código usado es el siguiente

Sheets("HOJAn").Select
Range("A10").Select
Range(Cells(Range("a65000").End(xlUp).Row, 1), Cells(Range("a65000").End(xlUp).Row, 26)).Copy Destination:=Sheets("DATOS").Range("A5")

HOJAn: Hojas que van incrementando

DATOS:Es la hoja donde se debe condensar la información

A5:rango a partir del cual se copia el primer dato

El detalle que quiero secuenciar esa función para no copiar esa linea de código para todas las hojas que tengo. y no se como hacer ese bucle para que repita la actividad en todas las hojas y lo pegue inmediatamente en el valor siguiente de fila en los DATOS

Gracias

Te debiera quedar así, donde además el bucle controla que no se trate de la hoja DATOS que no debe ser incluída.

Sub buscando()
'x Elsamatilde
For Each sh In ActiveWorkbook.Sheets
'evalúa que no se trate de la hoja DATOS y selecciona la hoja
If sh.Name <> "DATOS" Then
sh.Select
'copia el rango y lo pega a continuación del anterior
ActiveSheet.Range("A10").Select
Range(Cells(Range("a65000").End(xlUp).Row, 1), Cells(Range("a65000").End(xlUp).Row, 26)).Copy Destination:=Sheets("DATOS").Range("A65536").End(xlUp).Offset(1, 0)
End If
'repite el bucle para otras hojas
Next sh
End Sub

Probala y si todo quedó resuelto no olvides finalizar la consulta

Sdos

Elsa

PD) Aún se mantiene la promoción en manuales Excel 2010 y Programación VBA

Buen Día

Funciona muy bien y copia tal cual lo que necesito, el detalle que cuando llega al final de las hojas, en el último marca error en la siguiente línea de código


sh.Select

lo que hice para que continuara fue en el cuadro de error darle click a depurar, comentar esa línea y la macro terminó; pero tendría que hacer eso cada ocasión o hay alguna manera de corregirlo?

Gracias

¿Quizás tengas hojas ocultas... puede ser? Porque no debiera dar ningún error .

Podes agregar un control de error. Esto te impedirá saber qué hoja no se actualizó pero si ya sabes que es la última te puede servir.

Sub buscando()
'x Elsamatilde
On error resume next

For Each sh In ActiveWorkbook.Sheets
'sigue el resto del código enviado

Muchísimas Gracias, con las dos trabaja muy bien, y efectivamente había una hoja oculta, lo que sucede que no la había visto porque el archivo me lo enviaron para modificarlo, y no me había percatado de esa hoja.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas