Copiar al portapapeles filas no consecutivas

Necesito copiar al portapapeles dos filas o registros completos: A1:J1 (donde figuran los títulos de cada columna) y otra fila que elijo desde un listbox (que también está compuesta por las columnas A a J).

El código con el que estoy intentando hacerlo es:

Application. Selection(Range("A1:J1"), Range(Selection, ActiveCell.Offset(0, 9))). Copy

Pero selecciona todas las filas comprendidas entre la A y el registro seleccionado en el listbox.

1 respuesta

Respuesta

No se que dato es el que tomas en el listbox para indicar la fila, pero para copiar 2 filas no continuas puedes hacerlo de la siguiente forma.

Range("A1:J1,A3:J3").Select
Selection. Copy

Es cierto lo que decís, David.

El código que sugerís es útil cuando los rangos a copiar son estáticos, es decir, siempre son los mismos.

No obstante, tal como consulté, lo que necesito es copiar la información de celdas variables, que van de acuerdo a un registro determinado que selecciono a partir de un listbox. Es decir, en un momento puede ser la fila 6, en otro la fila 15, o la 245, etc. y sumarle un rango que sí es fijo: la fila 1.

Gracias por tomarte la molestia y el tiempo de responder.

Un ciber-abrazo.-

¿Puedes poner una imagen de tu listbox para saber que dato es el que seleccionas y poder adecuar el código?
Gracias por el ciber-abrazo. :)

Hola David..!!!

Aquí te pego imagen de los que solicitaste.

Renuevo el ciber-abrazo.-

Coloca el código que te comparto en el clic o doble clic de tu listbox (cambia el nombre del formulario y listbox al que les hayas asignado), estoy suponiendo que el dato que vas a buscar es el nombre que aparece en la primer columna de tu listbox y en tu hoja se encuentra en la columna A y la hoja donde se encuentra esta activa.

Nombre = Form1.Lista0.ItemData(Form1.Lista0.Index)
    Range("A1").Activate
    Do While ActiveCell.Value <> ""
        If Nombre = ActiveCell.Value Then
            Cell1 = ActiveCell.Address
            Cell2 = ActiveCell.Offset(0, 9).Address
            Range("A1:J1," & Cell1 & ":" & Cell2 & "").Select
            Selection.Copy
        End If

        Activecell.Offset(1, 0).Activate
    Loop

Estimado David:

Estuve probando tu código, el cual agradezco por supuesto. VBA me devuelve un mensaje de error.

Te copio ambas cosas:

No logro ver el mensaje de error y tampoco el código, podrías enviar el error a mi mail ([email protected]), si pudieras enviar el archivo sería mejor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas