Macros en secuencia.

Hola amigos de todoexpertos.
Tengo un problema con un macro. Necesito copiar este rango: "A1:C6", y pegar su contenido en "F1:F6". Necesito que la macro copie de nuevo "A1:C6" y lo pegue en "F7:F12", luego que copie de nuevo "A1:C6" y lo pegue en "F13:F18" y así sucesivamente
Gracias, Ruben Dario

1 Respuesta

Respuesta
1
Utiliza esta rutina:
Sub Copiar()
    Range("A1:C6").Copy
    For a = 1 To 5
        Range("F1").Offset((a - 1) * 6, 0).PasteSpecial
    Next a
    Application.CutCopyMode = False
End Sub
Cambia la linea For a = 1 To 3 a la cantidad de veces que quieras se repita tu copia. En este ejemplo se repite 3 veces.
Gracias por la aclaración. Sin embargo no me funciona: esto es lo que tengo escrito en el VISUAL BASIC:
Sub Hoja1_6Rectángulo_Haga_clic_en()
'
' Hoja1_6Rectángulo_Haga_clic_en Macro
'
'
    Sub Copiar()
    Range("A1:C6").Copy
    For a = 1 To 5
        Range("F1").Offset((a - 1) * 6, 0).PasteSpecial
    Next a
    Application.CutCopyMode = False
End Sub
Sin embargo cuando quiero ejecutar el macro, (el cual esta grabado en una autoformar rectangular, como puedes ver) me sale un mensaje que dice: Error de Compilación Se esperaba End Sub. Y resalta en color amarillo la primer linea, es decir: Sub Hoja1_6Rectángulo_Haga_clic_en().
Sin embargo cuando hago la macro sin autoforma, y la ejecuto lo que hace la macro es tomar el rango"A1:C6" y pegarlo en el rango "F1:H30"
Mi necesidad es que tome el rango "A1:C6" y al ejecutar la macro por primera vez lo pegue en "F1:H6", después cuando yo cambie los datos de "a1:c6" y ejecute de nuevo la macro, tome de nuevo ese rango "a1:c6" y lo pegue debajo de donde pego el pasado, es decir en "f7:h12" y así sucesivamente 260 veces.
Como siempre digo, cuantos más detalles y más preciso es el escenario de las consultas de los usuarios, mejor y más precisa es la respuesta que se obtiene.
Tienes que observar detenidamente el código que te he enviado. Este tiene un inicio y un final
Sub Copiar()  <---  inicio
...
...
End Sub <--- final
Pero de la forma en que lo has copiado a tu proyecto, le estas dando dos inicios y un final.
Sub Hoja1_6Rectángulo_Haga_clic_en()    <--- 1er inicio
'
    Sub Copiar()   <--- 2do inicio
...
...
End Sub <...  1 solo final
Esto es un error de compilación. ¿Solución? Tienes que quitarle un Inicio. ¿Cuál? Obviamente el Sub Copiar(), para que el inicio sea cuando presiones el autoforma.
Por otro lado, para que la rutina haga lo que necesitas, Reemplaza el código que te he enviado por este :
Sub Hoja1_6Rectángulo_Haga_clic_en()
    If Range("A1") = "" Then Range("A1") = " "
    Range("A1:C6").Copy
    For a = 1 To 260
        If Range("F1").Offset((a - 1) * 6, 0) = "" Then
            Range("F1").Offset((a - 1) * 6, 0).PasteSpecial
            Exit For
        End If
    Next a
    Application.CutCopyMode = False
    Range("A1").Select
End Sub
Por precaución, esta rutina ya tiene tu inicio y su final correspondiente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas