trabajar con rangos

22/01/2008 - 11:06 por Francisco Durante | Informe spam
Buenas grupo!
os explico mi caso:
Tengo 2 hojas, en la hoja 1 selecciono un rango y necesito pegarlo en la
hoja 2, pero en la hoja ya hay un rango con datos (A1:G25) y no quiero
machacarlo, sino que deseo que se copie a continuación. Por ejemplo, si el
rango de la hoja 2 termina en la celda G25, el rango de la hoja 1 debe
copiarse a partir de la siguiente fila libre, osea empezando en la A26.

Tengo el siguiente código que me indica la última celda ocupada de la hoja
2:

Dim LastCellAddress As String
Dim ultimaCelda As Range

' Return the address of the last cell to the variable.
LastCellAddress =
ActiveCell.SpecialCells(xlLastCell).AddressLocal(RowAbsolute:=False,
ColumnAbsolute:=False)

' Display the variable in a message box.
MsgBox LastCellAddress

Lo que no sé es como hacer para que sabiendo cual es la última celda de ese
rango, se copien los nuevos valores a partir de la fila siguiente.

A ver si alguien me ilumina :-)

Salu2!
 

Leer las respuestas

#1 Francisco Durante
22/01/2008 - 12:09 | Informe spam
Buenas de nuevo,
He estado leyendo acerca de la función Offest y he conseguido escribir en la
siguiente fila, pero solo funciona bien la primera vez que ejecuto dicho
código. Me explico:
No entiendo muy bien como se comporta el Offset, pero si la última celda
escrita es la G25 y ejecuto el código, me escribe en la A26, eso es lo
correcto!, pero si vuelvo a ejecutar el código, ahora me detecta como la
última celda la G26 y ahí no hay nada escrito! por lo que entonces me
escribe en la A27 , si lo vuelvo a ejecutar me detecta como últiam celda la
G27 y me escribe en la A28 y así sucesivamente :-(

Este es el codigo:

Dim LastCellAddress As String
Dim ultimaCelda As Range

' Return the address of the last cell to the variable.
LastCellAddress =
ActiveCell.SpecialCells(xlLastCell).AddressLocal(RowAbsolute:=False,
ColumnAbsolute:=False)
Set ultimaCelda = Hoja2.Range(LastCellAddress)

' Display the variable in a message box.
MsgBox LastCellAddress

'activamos la ultima celda
ultimaCelda.Activate

'escribimos en la siguiente fila libre
ultimaCelda.Offset(1, -6).Value = "AQUI EMPEZARIA A COPIAR"


"Francisco Durante" escribió en el mensaje
news:
Buenas grupo!
os explico mi caso:
Tengo 2 hojas, en la hoja 1 selecciono un rango y necesito pegarlo en la
hoja 2, pero en la hoja ya hay un rango con datos (A1:G25) y no quiero
machacarlo, sino que deseo que se copie a continuación. Por ejemplo, si el
rango de la hoja 2 termina en la celda G25, el rango de la hoja 1 debe
copiarse a partir de la siguiente fila libre, osea empezando en la A26.

Tengo el siguiente código que me indica la última celda ocupada de la hoja
2:

Dim LastCellAddress As String
Dim ultimaCelda As Range

' Return the address of the last cell to the variable.
LastCellAddress =
ActiveCell.SpecialCells(xlLastCell).AddressLocal(RowAbsolute:=False,
ColumnAbsolute:=False)

' Display the variable in a message box.
MsgBox LastCellAddress

Lo que no sé es como hacer para que sabiendo cual es la última celda de
ese rango, se copien los nuevos valores a partir de la fila siguiente.

A ver si alguien me ilumina :-)

Salu2!

Preguntas similares