Como crear macro repetitiva que sirva para diferentes filas

05/09/2003 - 13:07 por Paco² | Informe spam
Tengo que hacer un trabajo tedioso y repetitivo de ir cortando y pegando
ciertas celdas. Esto se va a repetir cientos de veces y habia pensado en
hacer una macro para llamarla desde la celda que quiero cortar.
He creado la macro, pero el problema se presenta cuando la llamo ya que hace
referencia a celdas absolutas y no sobre la fila a la que quiero aplicarla.
A continuacion os dejo la macro, a ver si me podeis decir como puedo
modificarla para hacer rapidamente este trabajo repetitivo de cortar y pegar
celdas.0


Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 05/09/2003 por pcuadrado
'
' Acceso directo: CTRL+t
'
Range("A28:E28").Select
Selection.Cut
Range("D27").Select
ActiveSheet.Paste
Range("A32").Select
End Sub

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
05/09/2003 - 13:33 | Informe spam
Puedes usar la propiedad Offset de una celda o rango para establecer referencias relativas desde ella, por ejemplo, 10 filas hacia arriba, 2 columnas a la derecha, etc. Pero si no nos especificas el desplazamiento desde la celda donde estás cuando llamas a la macro, poco más podemos decirte.
Aparte de esto, el código que pones se puede optimizar (supongo que te lo habrá generado el grabador de macros ¿?):

ActiveSheet.Range("A28:E28").Copy Destination:=ActiveSheet.Range("D27")
ActiveSheet.Range("A32").Select

Un saludo.


Fernando Arroyo
MS MVP - Excel

"Paco²" escribió en el mensaje news:
Tengo que hacer un trabajo tedioso y repetitivo de ir cortando y pegando
ciertas celdas. Esto se va a repetir cientos de veces y habia pensado en
hacer una macro para llamarla desde la celda que quiero cortar.
He creado la macro, pero el problema se presenta cuando la llamo ya que hace
referencia a celdas absolutas y no sobre la fila a la que quiero aplicarla.
A continuacion os dejo la macro, a ver si me podeis decir como puedo
modificarla para hacer rapidamente este trabajo repetitivo de cortar y pegar
celdas.0


Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 05/09/2003 por pcuadrado
'
' Acceso directo: CTRL+t
'
Range("A28:E28").Select
Selection.Cut
Range("D27").Select
ActiveSheet.Paste
Range("A32").Select
End Sub


Respuesta Responder a este mensaje
#2 Paco²
05/09/2003 - 17:18 | Informe spam
Es que el desplazamiento cada vez que llamo a la macro es diferente. Explico
mi problema graficamente:

celda1A celda1B celda1C
celda2A celda2B
celda3A
celda4A celda4B celda4C
celda5A celda5B
celda6A

Bien, yo quiero poner el contenido de celda2A celda2B en celda1D celda1E
Lo mismo pero 4 filas más abajo, poner el contenido de celda5A celda5B a
continuación de celda4C
Al final debo tener:

celda1A celda1B celda1C celda2A celda2B
celda3A
celda4A celda4B celda4C celda5A celda5B
celda6A

¿Me he explicado?


"Fernando Arroyo" escribió en el mensaje
news:
Puedes usar la propiedad Offset de una celda o rango para establecer
referencias relativas desde ella, por ejemplo, 10 filas hacia arriba, 2
columnas a la derecha, etc. Pero si no nos especificas el desplazamiento
desde la celda donde estás cuando llamas a la macro, poco más podemos
decirte.
Aparte de esto, el código que pones se puede optimizar (supongo que te lo
habrá generado el grabador de macros ¿?):

ActiveSheet.Range("A28:E28").Copy Destination:=ActiveSheet.Range("D27")
ActiveSheet.Range("A32").Select

Un saludo.


Fernando Arroyo
MS MVP - Excel

"Paco²" escribió en el mensaje
news:
Tengo que hacer un trabajo tedioso y repetitivo de ir cortando y pegando
ciertas celdas. Esto se va a repetir cientos de veces y habia pensado en
hacer una macro para llamarla desde la celda que quiero cortar.
He creado la macro, pero el problema se presenta cuando la llamo ya que


hace
referencia a celdas absolutas y no sobre la fila a la que quiero


aplicarla.
A continuacion os dejo la macro, a ver si me podeis decir como puedo
modificarla para hacer rapidamente este trabajo repetitivo de cortar y


pegar
celdas.0


Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 05/09/2003 por pcuadrado
'
' Acceso directo: CTRL+t
'
Range("A28:E28").Select
Selection.Cut
Range("D27").Select
ActiveSheet.Paste
Range("A32").Select
End Sub


Respuesta Responder a este mensaje
#3 Jairo Hernandez
05/09/2003 - 17:41 | Informe spam
o si lo que quieres copiar es una isla de celdas puedes usar
Selection.CurrentRegion.Select (para seleccionar un grupo de celdas)
que lo que hace es que selecciona el rango de celdas que estan juntas no
importando si es una o miles, pero solo funciona bien si el grupo de celdas
esta separado de las demas, como una especie de isla..

saludos


Jairo Josué Hernández Moreno
Choluteca, Honduras

"No sea siempre riguroso ni siempre blando y escoge el medio entre estos dos
extremos; que en ello esta el punto de la discreción."
- Miguel de Cervantes Saavedra


"Fernando Arroyo" escribió en el mensaje
news:
Puedes usar la propiedad Offset de una celda o rango para establecer
referencias relativas desde ella, por ejemplo, 10 filas hacia arriba, 2
columnas a la derecha, etc. Pero si no nos especificas el desplazamiento
desde la celda donde estás cuando llamas a la macro, poco más podemos
decirte.
Aparte de esto, el código que pones se puede optimizar (supongo que te lo
habrá generado el grabador de macros ¿?):

ActiveSheet.Range("A28:E28").Copy Destination:=ActiveSheet.Range("D27")
ActiveSheet.Range("A32").Select

Un saludo.


Fernando Arroyo
MS MVP - Excel

"Paco²" escribió en el mensaje
news:
Tengo que hacer un trabajo tedioso y repetitivo de ir cortando y pegando
ciertas celdas. Esto se va a repetir cientos de veces y habia pensado en
hacer una macro para llamarla desde la celda que quiero cortar.
He creado la macro, pero el problema se presenta cuando la llamo ya que


hace
referencia a celdas absolutas y no sobre la fila a la que quiero


aplicarla.
A continuacion os dejo la macro, a ver si me podeis decir como puedo
modificarla para hacer rapidamente este trabajo repetitivo de cortar y


pegar
celdas.0


Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 05/09/2003 por pcuadrado
'
' Acceso directo: CTRL+t
'
Range("A28:E28").Select
Selection.Cut
Range("D27").Select
ActiveSheet.Paste
Range("A32").Select
End Sub


Respuesta Responder a este mensaje
#4 Fernando Arroyo
05/09/2003 - 19:28 | Informe spam
Si te he entendido bien, lo siguiente debería funcionarte:

Sub CopiarCeldas()
Dim n As Long

With ActiveSheet
For n = 2 To .Range("A65536").End(xlUp).Row Step 3
.Range(.Cells(n, 1), .Cells(n, 2)).Cut Destination:=.Cells(n, 1).Offset(-1, 3)
Next n
End With
End Sub


En cualquier caso, es mejor que pruebes el código en una copia de la hoja, por si no hace exactamente lo que necesitas.
Un saludo.


Fernando Arroyo
MS MVP - Excel



"Paco²" escribió en el mensaje news:
Es que el desplazamiento cada vez que llamo a la macro es diferente. Explico
mi problema graficamente:

celda1A celda1B celda1C
celda2A celda2B
celda3A
celda4A celda4B celda4C
celda5A celda5B
celda6A

Bien, yo quiero poner el contenido de celda2A celda2B en celda1D celda1E
Lo mismo pero 4 filas más abajo, poner el contenido de celda5A celda5B a
continuación de celda4C
Al final debo tener:

celda1A celda1B celda1C celda2A celda2B
celda3A
celda4A celda4B celda4C celda5A celda5B
celda6A

¿Me he explicado?


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida