Tengo una hoja de cálculo estoy utilizando para compilar el texto que cambia todo el tiempo.

En la columna de ANUNCIOS, la Fila 4(AD4) pongo el contenido del texto, y se puede disponer de datos que va de 1000 a 4000 filas hacia abajo. Que cambia cada vez, así que no hay estática nombre de rango. Necesito una macro que

  • encuentra la pieza final de los datos en esa columna,
  • automáticamente «arrastra una caja» desde ese lugar, dos columnas a la izquierda (AB4)
  • y la copia… (3000 fila trozo de texto sería AB4:AD3004) (Macro se detiene allí, con el texto que desea copiar resaltado)

La versión actual se encuentra la parte inferior de la célula correctamente, pero si ejecuto la macro de un 2do tiempo, con los nuevos datos, se sigue tratando de copiar el mismo rango. (He utilizado la Fórmula de Definir.Nombre de método, a nombre de la celda y, a continuación, selecciona AB4:LastRow) pero SIEMPRE es 3160 si los datos se va a la fila de 4000, o no se…..

Sub Last_row()
Cells(Application.Rows.Count, 30).End(xlUp).Select
' following lines of code are useless
Range("AB4:AD3160").Select
Range("AD3160").Activate
Selection.Copy
End Sub
  • Esto es en MS Office Excel 2007. BTW.
InformationsquelleAutor CJG | 2012-03-28

2 Comentarios

  1. 3

    Para responder a su pregunta directamente:

    With Sheet1
        .Range("AB4", .Cells(Rows.Count, "AD").End(xlUp)).Copy
    End With

    Copia en la ubicación específica SIN utilizando el portapapeles:

    With Sheet1
        .Range("AB4", .Cells(Rows.Count, "AD").End(xlUp)).Copy Sheet2.[A1]
    End With

    Copia y excluir formato:

    With Sheet1
        With .Range("AB4", .Cells(Rows.Count, "AD").End(xlUp))
            Sheet2.Cells(1, "A").Resize(.Rows.Count, .Columns.Count).Value = .Value
        End With
    End With

    Nota: Reemplazar todas hoja de nombres (hoja1, Hoja2) por encima de su actual hoja de nombres.

    • Perfecto. Sucinta…. Bravo.
  2. 1

    Su actual código de duro-los códigos de la gama de intereses con
    Range("AB4:AD3160").Select

    Este código define un rango dinámico a partir de AB4 a la última celda no vacía en la columna AD

    Puede utilizar esta gama (sin seleccionar) para cambiar los valores en otros lugares (tenga en cuenta que usted no necesita realmente copia rng1, es posible volcado de estos valores a una gama directamente sin copiar y pegar.

    Sub Last_row()
    Dim rng1 As Range
    Set rng1 = Range([ab4], Cells(Rows.Count, 30).End(xlUp))
    rng1.Copy
    End Sub

    Actualización: Ejemplo de cómo copiar una dinámica de tamaño rango de una hoja a otra sin un copiar y pegar:

    Sub Last_row2()
        Dim ws1 As Worksheet
        Dim ws2 As Worksheet
        Dim rng1 As Range
    
        Set ws1 = Sheets(1)
        Set ws2 = Sheets(2)
        Set rng1 = ws1.Range(ws1.[ab4], ws1.Cells(Rows.Count, 30).End(xlUp))
        ws2.[a1].Resize(rng1.Rows.Count, rng1.Columns.Count).Value = rng1.Value
    End Sub

Dejar respuesta

Please enter your comment!
Please enter your name here