Copiar rangos y celdas no contiguas a la vez

Les envío esta pregunta para ver si me pueden ayudar. Tengo una macro que se encarga de copiar datos (rango de celdas) de una hoja a otra de forma iterativa. La duda que tengo es la siguiente:

Me gustaría poder copiar además de este rango de celdas, el valor de un par de celdas no contiguas a este rango y todo a la misma vez. En mi caso, serían las celdas D6 y F50. ¿Podríais decirme si esto es posible?

Dejo aquí una parte del código para aportar más información:

Dim rango As Range
Set rango = Sheets("estado").Range("A22")
Range("B4:B8").Copy
Application.Goto Sheets("estado").Range("A22")

If ActiveCell.Value = "" Then
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True

1 respuesta

Respuesta
1

Si solo tiene que elegir la celda donde quiere copiar di ha información

Ejemplo

sheets ("estado").range ("a23") = range ("d6")

Eso es el él caso de d6 ya para el otro sería elegir la celda

Buenas tardes,

Gracias por tu respuesta Aneudys, pero creo que me he explicado mal. La función actual copia un rango de valores contiguos de una columna y los pega de forma transpuesta a la fila A22 de otro worksheet. El problema que tengo es que además de copiar este rango, necesito que me copie después y en la misma fila (A22) los valores de las celdas D6 y F50. ¿Es esto posible? Gracias.

Seria de esta manera

If ActiveCell.Value = "" Then
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
ActiveCell.End(xlToRight).Offset(0, 1) = sheets("nombre").Range("d6")
ActiveCell.End(xlToRight).Offset(0, 1) = sheets("nombre").Range("f50")

donde dice nombre es el nombre de la hoja donde se tomarar los datos a copiar

Si te silve no olvides valora para cerrar la pregunta

Buenos días Aneudys,

Muchas gracias por tu respuesta, lo he comprobado y la modificación funciona perfectamente, pero tengo un pequeño problema y es que el nombre de la hoja origen no lo tendré, ya que este no siempre tendrá un valor fijo, pero sé que siempre sera la hoja activa.

Entiendo que debo jugar con el parámetro "ActiveSheet" pero no sé como implementarlo en:

ActiveCell.End(xlToRight).Offset(0, 1) = sheets("nombre").Range("d6")
ActiveCell.End(xlToRight).Offset(0, 1) = sheets("nombre").Range("f50")

¿Podrías indicarme como sería por favor?

Saludos,

valor1 = range("d6")
valor2 = range("f50")
If ActiveCell.Value = "" Then
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
ActiveCell.End(xlToRight).Offset(0, 1) = valor1
ActiveCell.End(xlToRight).Offset(0, 1) = valor2

entonces guardemos el datos en una variable seria de esta manera

Buenos días,

Acabo de hacer las modificaciones indicadas en tu mensaje, pero Visual Basic me muestra el siguiente error:

"Se ha producido el error '91' en tiempo de ejecución: Variable de objeto o bloque With no establecido".

¿Sabrías decirme a qué puede ser debido por favor?

[email protected] mándame el archivo para ver donde puede estar el error

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas