Si en tu Base siempre vas a tener datos en la columna A, puedes utilizar esto para localizar la última fila con datos, como cuando pulsas [ fin ] y [flecha abajo]
esto es una propiedad llamada End del rango. por ejemplo:
Range("A1").End(xlDown) ' se refiere a la última celda con datos bajo la A1.
Para referirte a la celda de debajo, es decir, la primera vacía será algo así (Tiene el inconveniente de que la primera vez, cuando no haya datos, se irá a la última fila de la hoja, así que habrá que comprobarlo antes):
Sub Copiar()
Worksheets(HojaMatriz).Range(RangoDatos).Copy
With Worksheets(HojaBase)
.Paste .Range(RangoPrimeraCelda).End(xlDown).Offset(1, 0)
End With
End Sub
También podrías emplear el rango UsedRange de la hoja (como cuando pulsas [ Ctrl ] [ fin ]) que lleva al último rango utilizado en la hoja (esto tiene algunos inconvenientes, porque si eliminas información, la última celda se queda donde estaba)
Worksheets("base").UserRange.Rows.Count ' esto da las filas utilizadas en la hoja
varias opciones
Si en tu Base siempre vas a tener datos en la columna A, puedes utilizar esto para localizar la última fila con datos, como cuando pulsas [ fin ] y [flecha abajo]
esto es una propiedad llamada End del rango. por ejemplo:
Range("A1").End(xlDown) ' se refiere a la última celda con datos bajo la A1.
Para referirte a la celda de debajo, es decir, la primera vacía será algo así (Tiene el inconveniente de que la primera vez, cuando no haya datos, se irá a la última fila de la hoja, así que habrá que comprobarlo antes):
Worksheets(HojaBase).Range("a1").End(xlDown).Offset(1, 0)y por ejemplo, para asignar valores a partir de esa celda, puedes emplear Offset una vez más
With Worksheets("base").Range("a1").End(xlDown).Offset(1, 0)
.Value = "la primera libre"
.Offset(0, 1).Value = "una a la derecha"
End With
Bueno, ya puedes copiar y pegar los datos de tu hoja inicial a la otra, o puedes anotarlos celda a celda.
tal y como tienes tu hoja, prueba con esto (faltaría controlar el error para la primera fila), te lo pongo en el archivo adjunto:
Option Explicit
Const HojaMatriz = "matriz"
Const RangoDatos = "A2:J2"
Const HojaBase = "base"
Const RangoPrimeraCelda = "A1"
Sub Copiar()
Worksheets(HojaMatriz).Range(RangoDatos).Copy
With Worksheets(HojaBase)
.Paste .Range(RangoPrimeraCelda).End(xlDown).Offset(1, 0)
End With
End Sub
También podrías emplear el rango UsedRange de la hoja (como cuando pulsas [ Ctrl ] [ fin ]) que lleva al último rango utilizado en la hoja (esto tiene algunos inconvenientes, porque si eliminas información, la última celda se queda donde estaba)
Worksheets("base").UserRange.Rows.Count ' esto da las filas utilizadas en la hoja
------
Ya sé Excel, pero necesito más