Cómo hacer referencia a la última fila vacía distinta a la hoja actual?

Tengo un código que funciona bien sólo cuando la celda de la hoja del libro destino es especifica, aquí viene el problema, que esa "celda destino" (que es desde dónde se pegarán los nuevos datos copiados del libro origen), no es fija, ya que siempre será la última fila vacía de la hoja destino, y ésta celda es variable.
Quisiera por favor me puedan indicar cómo hacer para hacer que los datos que se copien de la hoja origen se peguen a partir de la última fila libre de la hoja destino.

El código está en un módulo y se ejecuta desde un botón en la hoja "MAIN" del libro destino ("APLICACION - Notificaciones Nacionales.xlsb"), el libro origen se llama "Olva - Belen.xlsx"
Agradezco de antemano su valiosa ayuda. Dejo el link para que puedan descargarlo. Gracias.

https://drive.google.com/file/d/1yYY2smkPZ3rQgshnuswSy7tanEipcO3M/view?usp=sharing

Respuesta
1

Esto te puede aportar algo

Esta variable determina la ultima fila con datos si sumas uno es la ultima fila donde poder agregar datos

uf = Sheets("hoja1").Range("A" & Rows.Count).End(xlUp).Row

uf = Sheets("hoja1").Range("A" & Rows.Count).End(xlUp).Row +1

En este caso hace referencia a la hoja especifica que es hoja 1 si tu requieres usar el código para cualquier hoja basta activarla asi

Sheets("HojaQueQuieroActiva").Activate ' también se puede usar select

uf = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row +1

https://youtu.be/_XegDeHiORc

https://youtu.be/Z9Rv4Y-cF24

1 respuesta más de otro experto

Respuesta
2

Te anexo un par de ejemplos para hacer referencia a una hoja destino:

En este ejemplo en cada línea pones el nombre de la hoja, la hoja2 es la hoja destino y la hoja1 es la hoja origen.

Sub macro2()
    'fila vacía después de la última fila con datos de la columna "A"
    u2 = Sheets("hoja2").Range("A" & Rows.Count).End(xlUp).Row + 1
    'Pasar datos de la hoja1 a la hoja2
    Sheets("hoja2").Cells(u2, "A") = Sheets("hoja1").Range("D4")
    Sheets("hoja2").Cells(u2, "B") = Sheets("hoja1").Range("E5")
End Sub

En este ejemplo, se establece en los objetos h1 y h2 las hojas origen y destino respectivamente y después, en cada línea solamente se hace referencia.

Sub macro1()
    Set h1 = Sheets("Hoja1")    'hoja oringen
    Set h2 = Sheets("Hoja2")    'hoja destino
    '
    'fila vacía después de la última fila con datos de la columna "A"
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    'Pasar datos de la hoja1 a la hoja2
    h2.Cells(u2, "A") = h1.Range("D4")
    h2.Cells(u2, "B") = h1.Range("E5")
End Sub

Particularmente se me hace más práctica la segunda opción, estableciendo en los objetos h1 y h2 las hojas.

Trata de adaptar el ejemplo a tu macro. Si tienes dudas avísame.


Gracias Dante por responder, pero no he podido adaptar el código del ejemplo que me enviaste, siempre me termina dando error. Sería mucha molestia pedirte por favor, si lo pudieras acoplar ese código al mío, que está en el archivo que adjunté en el link de la pregunta inicial que realicé?. Gracias nuevamente y disculpa las molestias que te puedo causar.

No puedo descargar el archivo, me lo podrías enviar a mi correo

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Frank Palma Zarzosa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas