![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
09/10/2008, 09:53
|
![Avatar de mrocf](http://static.forosdelweb.com/customavatars/avatar174421_2.gif) | | | Fecha de Ingreso: marzo-2007 Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 10 meses Puntos: 88 | |
Respuesta: VBA - Mensaje de espere Es sencillo. Mientras que
Código:
For j = 2 To numRows(2)
If (Workbooks(2).Worksheets(1).Range(varCellOriginalColumn & i).Value = Workbooks(3).Worksheets(1).Range(varCellDestinyColumn & j).Value) Then
encontrada = True
pos = j
Exit For
End If
Next j
recorre -una a una- las celdas del rango que se inicia en la celda
Workbooks(3).Worksheets(1).Range(varCellDestinyCol umn & "2")
hasta la celda
Workbooks(3).Worksheets(1).Range(varCellDestinyCol umn & numRows(2))
buscando cual de ellas contiene el mismo valor que
Workbooks(2).Worksheets(1).Range(varCellOriginalCo lumn & i)
el código
Código:
Set Celda = Range(Range(Workbooks(3).Worksheets(1).Range(varCellDestinyColumn & 2)), _
Range(Workbooks(3).Worksheets(1).Range(varCellDestinyColumn & numRows(2)))).Find( _
What:=(Workbooks(2).Worksheets(1).Range(varCellOriginalColumn & i).Value), _
LookIn:=xlValues, LookAt:=xlWhole)
equivale al comando "Buscar" (Ctrl + B) del Excel ("Find" en inglés).
Como este comando es "inmensamente" más rápido que buscar -una a una- en las celdas del rango en cuestión la igualdad, deberías notar la diferencia inmediatamente.
Investiga en la ayuda del VBA sobre las características del método "Find": verás que devolverá como resultado una celda.
De allí es que, más abajo en tu código, reemplacé:
valueSearch = Range(varCellDestinyCopy & pos).Value
por:
valueSearch = Celda.Value
Cualquier otra duda comenta, ¿si?.
Saludos, Cacho. |