Macro que repita la cantidad que se muestra en una celda

Tengo este Excel que me ayuda a imprimir las etiquetas de mis productos la forma en la que la uso es la siguiente en la fila A2 pongo los datos y al oprimir el botón copiar me copia hacia abajo las veces que yo oprima el botón y ahí es donde quiero hacer el cambio. Quiero que en lugar de estar oprimiendo el botón las veces que quiero que copie lo haga la cantidad que aparece en E2. La macro que estoy usando es esta.

Sub copiar()
'opcional: verifica que se esté seleccionando rango en A:C
Sheets("PRODUCTOS").Select
ActiveSheet.Unprotect Password:="contra"
If Selection.Row = 1 Or Selection.Column > 3 Or Selection.Count > 3 Then Exit Sub
'ubica la siguiente fila libre y pega la selección
filx = Range("A2").CurrentRegion.Rows.Count + 1
Range("A" & ActiveCell.Row & ":C" & ActiveCell.Row).Copy Destination:=Range("A" & filx)
Sheets("PRODUCTOS").Select
ActiveSheet.Protect Password:="contra"

End Sub

1 respuesta

Respuesta
2

Prueba esta macro

Sub copiar()
copias = Range("e2")
With Sheets("productos").Range("a2")
    .Resize(copias, 3).Value = .Resize(1, 3).Value
End With
End Sub

solo tecleas el numero y la macro hara las copias requeridas

Gracias por contestar. Así es como necesito nada mas faltaría que después de que copie las veces que le ponga pueda hacer lo mismo en la fila que quede vacía después de las veces copiadas. Por ejemplo. ya me copio los datos de la fila A2 5 veces, ahora la fila A7 que es la siguiente disponible en este caso le pongo los datos de otro producto y quiero repetir 10 veces y así sucesivamente. quiero copie la fila que yo quiera las veces que ponga yo en E2. espero darme a entender. Gracias 

Entonces usa esta macro, para que no este regresando a llenar las veces de copiado, la macro te preguntara cada que la corras cuantas copias quieres y te ira posicionado para que la captura sea continua

Sub copiar()
COPIAS = InputBox("cuantas copias?", "AVISO")
Range("e2") = COPIAS
filas = Range("a1").CurrentRegion.Rows.Count
If filas = 2 Then Range("a3").Resize(COPIAS - 1, 3).Value = Range("a2").Resize(1, 3).Value
If filas > 2 Then Range("a1").Rows(filas + 1).Resize(COPIAS - 1, 3).Value = Range("a1").Rows(filas).Resize(1, 3).Value
Range("a1").Rows(filas + COPIAS).Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas