Problema con macros en excel

Hola; tengo un pequeño problema con una macro en excel. Quiero copiar las columnas ("A:I") de la hoja 1 en la hoja 2, el problema es que quiero que se copien a continuación de las que ya tengo en la hoja 2.
¿Es posible?. Muchas gracias por la ayuda.

1 respuesta

Respuesta
1
Si es posible, la rutina siguiente guarda en la variable la primer col libre, siempre y cuando no haya intercaladas celdas vacías en la fila 1.
Sub EncontrarCol()
Dim nrocol As Integer
'se selecciona la última celda de la fila 1
Range("A1").End(xlToRight).Select
'se guarda en variable el nro de col +1
nrocol = ActiveCell.Column + 1
'se muestra en un mensaje el total
MsgBox nrocol
End Sub
Saludos y no olvides finalizar. FELICES FIESTAS!
Hola; tengo un pequeño problema con una macro en excel. Quiero copiar las columnas ("A:I") de la hoja 1 en la hoja 2, el problema es que quiero que se copien a continuación de las que ya tengo en la hoja 2.
¿Es posible?. Muchas gracias por la ayuda.
Hola Elsa, primero darte las gracias por tu respuesta.
Lo he probado y no funciona exactamente como quería. Efectivamente copia las columnas seleccionadas de la hoja 1 en la hoja 2 pero no a continuación de las que ya tenia. Siempre las copia en una columna más, pero las que ya tenía en la hoja 2 desaparecen. Seguramente sea un error mío. Mi idea era una vez seleccionadas y copiadas las columnas ("A:I") de la hoja 1, pegarlas en la hoja dos a continuación de las que ya tenia en esta hoja, es decir si en la hoja 2 ya tengo la columnas ("A:I") quiero que al ejecutar la macro se peguen en las columnas ("J:R") la siguiente en ("S:AA") y así sucesivamente.
¿Es posible?
Un saludo
Rod
Hola de nuevo. Te adjunto la macro completa para ver dónde puede estar el error.
Como te comenté, la primera vez copia las columnas seleccionadas correctamente, pero en las sucesivas veces las copia en la siguiente columna, es decir, si la primera me copia de ("A:I"), en la siguiente me copia de ("B:J"), borrándome las que ya tenia antes.
Sub Febrero()
Columns("B:I").Select
Selection.Copy
Sheets("Febrero").Select
Dim nrocol As Integer
Range("A1").End(xlToRight).Select
nrocol = ActiveCell.Column + 1
MsgBox nrocol
ActiveSheet.Paste
End Sub
Un saludo y ¡Feliz año nuevo!
Rod
Eso es lo que hace la rutina, pero atención que no debe haber celdas vacías en la fila 1 (según el ejemplo) ya que Excel considera que esa es la primer col vacía.
El problema debe estar en ls instrucciones que estás utilizando para copiar y pegar. ¿Por qué no me pasas es parte de la rutina completa?
De todos modos te la ajusté para el caso de que las 2 primeras col estén vacías, ya que la instrucción End() te lleva hasta el final si eso pasa.
Efectivamente el problema estaba en tu forma de pegar los datos, ya que nunca te posicionabas en la columna encontrada.
Aquí tienes la rutina ajustada.
Saludos y no dejes de finalizar. Felices fiestas!
Elsa
Sub Febrero()
Dim nrocol As Integer
Columns("B:I").Select
Selection.Copy
Sheets("Febrero").Select
'se busca la primer col libre
If Range("A1").Value = "" Then
nrocol = 1
ElseIf Range("B1").Value = "" Then
nrocol = 2
Else
Range("A1").End(xlToRight).Select
nrocol = ActiveCell.Column + 1
End If
'se selecciona la primer celda de la col libre
Cells(1, nrocol).Select
ActiveSheet.Paste
'se desactiva el modo copiar
Application.CutCopyMode = False
'opcional: regresar a la hoja de origen
'reemplazar el nombre
Sheets("HojaOrigen").Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas