MAcro Excel - Pasar la referencia de una celda y no el valor de la celda

Sigo aquí intentando llevar adelante el proyecto.

Intentaré explicar lo mejor posible mi problema. Tengo una tabla dinámica, en una hoja. La misma agrupa las ventas de los productos y es actualizable. Contiene los datos de cada mes, por lo cual sus dimensiones en cuanto a largo por tienda, varían de mes en mes. Por ello busco hacer desplazamientos relativos del tipo Selection.End(xlToRight).select y Selection.End(xlDown).Select. El punto es que necesito transponer las datos obtenidos ahi, en hojas de calculo separadas "Hoja1"; "Hoja2"; etc. Estoy claro en que el proceso deberá repetirse por cada hoja. Estoy tratando de construir los rangos para copiar en las hojas respectivas, pero no se como asignarle la referencia de la celda y no el valor a las variables CeldaInicio, CeldaFinal, para poder construír el rango a copiar.

He tratado con esto pero no me funciona

Dim CeldaInicio As Range
Dim CeldaFinal As Range
Sheets("Hoja con tabla dinámica").Select
Range("D12").Select -------> 'este es el inicio de la tabla (siempre)
CeldaInicio = ActiveCell.Cells ---> aquí se detiene y arroja error
Selection.End(xlDown).Select ----> aca busco el desplazamiento hasta la ultima linea ocupada hacia abajo.
ActiveCell.Offset(0, 5).Select ----->aca me desplazo 5 columnas a la derecha (siempre)
CeldaFinal = ActiveCell.Cells
Range(Cells(CeldaInicio), Cells(CeldaFinal)).Select --->intento construir rango desde las variables
Selection.Copy
Sheets("hoja Destino 1").Select
Range("e3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True

1 respuesta

Respuesta
1

Para obtener la referecia de la celda seleccionada

linea = ActiveCell.Row

columna = ActiveCell.Column

celda= ActiveCell.Address

Pero para utilizar la referencia podrías hacerlo así

Range("D12").Select
    linini = ActiveCell.Row
    colini = ActiveCell.Column
    Selection.End(xlDown).Select
    ActiveCell.Offset(0, 5).Select
    linfin = ActiveCell.Row
    colfin = ActiveCell.Column
Range(Cells(linini, colini), Cells(linfin, colfin)).Select

Saludos. Dam

No olvides cerrar la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas