Saltar al contenido

Modificar macro para copiar filas


Recommended Posts

publicado

Hola a todos en el foro, hace bastante tiempo me dieron esta macro aquí en el foro, la cual funciona bastante bien dentro de la plantilla que utilizo, pero, me gustaría hacer una pequeña modificación a la forma en la cual trabaja. La macro copia filas completas a nuevas hojas, basado en un criterio de búsqueda (Forma 1 o Forma 2) , el pequeño problema, es que si presiono el botón más de una vez, se copian los datos dos veces en la nueva hoja (quedan repetidos), lo cual es un problema para luego analizarlos. estoy usando excel 2007, en windows xp, adjunto un archivo comprimido con el fichero de muestra, la macro es la siguiente:

Sub CopyForm1()
Application.ScreenUpdating = False
For fila = 1 To 65
If Cells(fila, 4).Value = "Forma 1" Then
Rows(fila).Copy
Worksheets("ANF1").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteAll
End If
Next fila

Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Sub CopyForm2()
Application.ScreenUpdating = False
For fila = 1 To 65
If Cells(fila, 4).Value = "Forma 2" Then
Rows(fila).Copy
Worksheets("ANF2").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteAll
End If
Next fila

Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
[/CODE]

adjunto el ejemplo.

Agradecido de antemano.

foro_copiar.zip

publicado

hola , soy nueva y trato de ayudar, existe la posibilidad que en la columna A se repitan los numeros? o son indices unicos, si es asi podrias usar un formato condicional y te marcara de color diferente los que estan repetidos

publicado

Gracias por la respuesta, pero, lo que busco es más simple, solo deseo que al apretar el botón, se ejecute la macro actualizando los valores en la hoja de destino, no volviéndolos a pegar seguidos de los que ya estaban, es decir, sobre escribirlos.

Saludos.

publicado

Aquí dejo otro intento, esta vez es solo un botón que cumple con las dos funciones

Sub CopyForm()
Application.ScreenUpdating = False
Sheets("Matriz_Binaria").Select
' Buscamos
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
' Loop
For x = 2 To FinalRow
' Copiamos las celdas de la columna D que cumplan con la condición
ThisValue = Cells(x, 4).Value
If ThisValue = "Forma 1" Then
Cells(x, 1).Resize(1, 33).Copy
Sheets("ANF1").Select
NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(NextRow, 1).Select
ActiveSheet.Paste
Sheets("Matriz_Binaria").Select
ElseIf ThisValue = "Forma 2" Then
Cells(x, 1).Resize(1, 33).Copy
Sheets("ANF2").Select
NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(NextRow, 1).Select
ActiveSheet.Paste
Sheets("Matriz_Binaria").Select
End If
Next x
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub[/CODE]

VBA es totalmente desconocido para mi....

publicado

OK, ya solucione mi problema, bastaba con añadir :

'Limpiar datos anteriores
Sheets("ANF1").Range("A2:DA46").Cells.ClearContents
Sheets("ANF2").Range("A2:DA46").Cells.ClearContents[/CODE]

.

Tema Cerrado.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.