Ayuda

04/08/2004 - 01:44 por Marcelo | Informe spam
Hola a todos.

Creo que el mensje no llegó por eso lo vuelvo a enviar.

Me surge la siguiente interrogante que necesito resolver.
¿Cómo puedo hacer con la macro que copio debajo para que cuando comienza a
seleccionar los datos y a copiarlos omita copiarlos en cierto rango de
filas?
La macro va copiando y pegando datos, pero necesito que cuando vaya a
pegarlos en la fila 68 de la hoja "cancelación" salte a la fila 77 de modo
que las filas 68 a 76 de la hoja "cancelación" queden vacías.
Por si sirve de algo, el rango donde necesito que se copien los datos en la
hoja "Cancelación" es de la fila 21 a la 67 y luego de la 77 en adelante.
No sé si esto es posible, por eso necesito su ayuda.

Saludos a todos,

Marcelo


Sub cancelar_AT()

Sheets("Cancelación").Select
Rows("21:501").Select
Selection.ClearContents

Dim Fila As Integer
For Fila = 2 To 20000
If Application.Sum(Worksheets("Descargas").Range("B" & Fila)) = 0 Then
Exit For
If Not Application.Sum(Worksheets("Descargas").Range("B" & Fila)) <>
(Worksheets("Cancelación").Range("AD12")) Then
Sheets("Descargas").Select
Range("C" & Fila).Select
Selection.Copy
Sheets("Cancelación").Select
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
 

Leer las respuestas

#1 Héctor Miguel
04/08/2004 - 05:03 | Informe spam
hola, Marcelo !

Creo que el mensje no llego ... lo vuelvo a enviar.


si 'llego' :D [lo que sucede es que -en ocasiones- algunos servidores... 'se tardan'] ;)

... macro que ... omita ... cierto rango de filas?
... que cuando vaya a pegarlos en la fila 68 ... salte a la fila 77 [...]



una manera pudiera ser metiendo un 'salto estrategico' dentro del for...next [p.e.]
-> el contador_fila [descargas] inicia en 2 y copia [a cancelacion] iniciando en la fila 21
-> cuando ha copiado a la fila 67 [de cancelacion], el contador_fila 'va' en la cuenta de 48
-> en la siguiente fila_contador [49] 'obliga' a la macro a que 'haga [en cancelacion] un offset' de 10 [NO de 1]
[de paso...] podrias 'simplificar' [y 'agilizar'] el codigo con [algunos de] los siguientes cambios ['sugeridos'] :)

-> puedes evitar el estar 'switcheando' entre hojas y rangos
puedes usar el metodo 'copy' con la sintaxis: =>Rango.Copy Rango_destino<-> [me parece que] NO es necesaria la funcion suma [solo haces referencia a una celda a la vez]

si cualquier duda... ¿comentas?
saludos,
hector.
[la parte de] la macro [que 'expones'] con las sugerencias incluidas ==Sub cancelar_AT()
Dim Fila As Integer, Salto As Integer
Worksheets("Cancelación").Rows("21:501").ClearContents
With Worksheets("Descargas")
For Fila = 2 To 2000
If .Range("b" & Fila) = 0 Then Exit For
If Not .Range("b" & Fila) <> Worksheets("Cancelación").Range("ad12") Then
If Fila = 49 Then Salto = 10 Else Salto = 1
.Range("c" & Fila).Copy Worksheets("Cancelación").Range("a65536").End(xlUp).Offset(Salto)

Preguntas similares