28/07/2010, 21:37
|
| | | Fecha de Ingreso: marzo-2007 Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 9 meses Puntos: 88 | |
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 originalDim C As Range, Aux As String ' defino el objeto c para q almacene la coincidencia Set C = Hoja1.Range("a1:a10").Find(2, LookIn:=xlValues, LookAt:=xlPart) ' si no hay coincidencia no hace nada If C Is Nothing Then Exit Sub End If 'guardo el primer valor de la coincidencia Aux = C.Address 'entra en loop para hacer las copias Do C.Copy [H2].End(xlDown).Offset(1) ' entrega el nuevo valor encontrado a c Set C = Hoja1.Range("a1:a10").FindNext(C) Loop Until Aux = C.Address
Saludos, Cacho. |