Ver Mensaje Individual
  #5 (permalink)  
Antiguo 28/07/2010, 21:37
Avatar de mrocf
mrocf
 
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 9 meses
Puntos: 88
De acuerdo Excel con vbasic for application

Hola! daviky.
Tu código está más que bien concebido pues es lo ideal para cuando se tienen decenas de miles de datos en la columna A.

Tu error es "mínimo". En efecto:

En lugar de:
aux = c.Value

debe ser:
aux = c.Address

Y en lugar de:
If aux = c.Value Then

debe ser:
If aux = c.Address Then

O sea: en lugar de terminar el código ante una repetición del valor, lo debes terminar ante una repetición de la referencia de la celda inicial.

Te muestro -entonces- una posible depuración, aunque el código que has elaborado resulta operativo con aquellas pequeñas correcciones:

Código vb:
Ver original
  1. Dim C As Range, Aux As String
  2. ' defino el objeto c para q almacene la coincidencia
  3. Set C = Hoja1.Range("a1:a10").Find(2, LookIn:=xlValues, LookAt:=xlPart)
  4. ' si no hay coincidencia no hace nada
  5. If C Is Nothing Then
  6.   Exit Sub
  7. End If
  8. 'guardo el primer valor de la coincidencia
  9. Aux = C.Address
  10. 'entra en loop para hacer las copias
  11.  
  12. Do
  13.   C.Copy [H2].End(xlDown).Offset(1)
  14. ' entrega el nuevo valor encontrado a c
  15.  Set C = Hoja1.Range("a1:a10").FindNext(C)
  16. Loop Until Aux = C.Address


Saludos, Cacho.