¿Cómo seleccionar una rango a partir de una celda variable por VBA?

Quisiera programar un acción de copiado y pegado de un rango variable en función de si hay algún valor en el rango de la columna B, me explico: en funcion del último registro que haya en el rango B14:B33 seleccionar esa celda e ir hacia la derecha hasta el rango I14:T14 (sería variable el valor de la fila al estar condicionado a partir del último valor de la columna B) y seleccionar y copiar ese rango transponiéndolo a otra hoja.

   Sheets("DATOS").Select
   Range("B14").Select
   Do While Not IsEmpty(ActiveCell)
   ActiveCell.Offset(0, 9).Select
   Selection.End(xlToRight).Offset(0, 12).Select
   Loop
   Selection.Copy
   Sheets("PORTADA").Select
   Range("J13").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True

He usado este código pero no consigo obtener resultados.

2 Respuestas

Respuesta
1

Hoseluis,

Esta accion la ejecurarias despue de digitar el ultimo registro en la hoja

O quiere se copie segun se vallan registrando datos en la columna B

¿

?

Hola, mi intención es que detecte el última fila con datos del rango (B14:B33) y que en esa fila seleccione el rango (I:T) y lo copie en otra hoja. 

Se ejecutaría cuando se activará esa hoja.

Gracias

Hola,

lo que necesito es que detecte la última fila en el rango B14:B33 que tenga texto la celda y que seleccione en esa fila el rango (I:T) y lo copie en otra hoja.

La acción se ejecutaría cuando se activará la hoja.

Gracias

Ok vamos por parte

Si lo hace al activar la hoja estos seria problematico para ti por cada ves que entre en la hoja va a copier y si no hay dato nuevo te va a repetir el mismo dato varia veces es decir si sales de hoja

Y vuelve y entra esta ejecutaria copiando los datos si lo hace varias vese se repetirian

Mi opinion di digitas la informacion en una hoja y quiere que se copie en otra uso

El evento target asi me ahorro tiempo

Sino es como yo digo explicame in poquito major

Respuesta
1

Prueba con algo como:

Sub prueba()
    Dim r As Range
    Set r = Range("Datos!I15").Resize(Range("Datos!B34").End(xlUp).Row - 14, 12)
    r.Copy
    [Portada!J13].PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
    Application.CutCopyMode = False
    Set r = Nothing
End Sub

pero mejor en una copia del libro, por si no hace exactamente lo que necesitas.

Saludos_

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas