Hola amigos del foro, tengo una macro que me copia datos de una hoja a otra... pero me copia los valores 0 tambien... necesito que me copie los datos, solo si la celda principal de origen es mayor a 0... les muestro mi macro....
Range("AF121:AR122").Select
Selection.Copy
Application.Goto Reference:="VICTIMA"
Selection.End(xlUp).Select
ActiveCell.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.Goto Reference:="Inicia3"
lo que necesito entonces es que solo si la celda AF121 es mayor a 0 copie los datos del rango... caso contrario no copie....
Son muchos mas rangos a copiar, esta es sola una grupo de comandos...
Agradezco de antemano su gentil ayuda.
Si utilizas COPY y PASTE, las celdas vacías te las copiará como 0, tal y como hace siempre Excel.
Si quieres discriminar, tendrás que supervisar los datos de cada celda mediante una macro, de manera que si es 0 no la copie.
Una alternativa es permitir que la copie, pero utilizando un formato condicional hacer que si el valor es 0, el color del texto sea blanco (igual que el fondo, para que no se vea)
Un saludo
Gracias por la respuesta Cron, pero aun asi me copiaria las celdas vacias y las con valor 0.... necesito que me ignore el copiado de la linea completa si el valor de af121 es 0.....
Pues entonces ve recorriendo las celdas origen, introduces su valor en memoria (por ejemplo una matriz) y luego te vas a la otra pestaña y copias o no en función del valor.
Gracias por tus respuestas amigo Cron, son demasiadas celdas, informacion que se introduce en una hoja, luego las copia a la base... en la misma macro no habria la forma de condicionar la copia fila por fila omitiendo la misma si el primer valor de la fila es 0?... lo que pasa es que al copiar a la base, me deja muchas filas en blanco con valores 0.
También puedes hacer eso. Si sabes de entrada qué celdas son las que pueden sacarse del rango, puedes hacer la comprobación del valor primero, y según sea copia un rango o el otro.
Nuevamente gracias Cron, pero soy novato en excel y en macros.... por eso solicito ayuda en este tema... si tubieras las variantes, podrias por favor escribirlas?.. asi entenderia mejor...
gracias amigo por tu paciencia.
Revisando tu código he aprendido una cosa...
Prueba a modificar la línea:
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=False
Poniendo true donde he marcado en negrita y ejecuta el código.
Pensaba que Excel no hacía esto. Mis disculpas.
Mil gracias amigo Cron, lo probare enseguida y te aviso como me fue....
Un abrazo.
Amigo Cron, acabo de probar la modificacion que me pasaste... aun asi me copia las filas con valores iniciales 0.
Habria otra solucion?
Ah, claro. Lo que hace es no copiar las que no tienen valor, pero si en el original tienen 0, lo copia.
Prueba entonces lo siguiente (escribo sobre tu código)
If range("AF121").value <> 0 then
Range("AF121:AR122").Select
Selection.Copy
Application.Goto Reference:="VICTIMA"
Selection.End(xlUp).Select
ActiveCell.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.Goto Reference:="Inicia3"
endif