ricardo, apesar de ja ter posto como resolvido, segue uma variação da rotina :
Sub ProcurarCopiarMauro()
Dim Cell As Variant
Dim uRange As Range
Dim x As Long
Dim CellTxt As String
Dim RngFindTitle As Range
Dim FindTitle As Integer
Dim tRow As Long
Dim tCol As Integer
Dim sW As Worksheet
Set sW = Worksheets("Plan1")
x = Sheets("Plan1").[A1].Value
Set uRange = sW.UsedRange
Set RngFindTitle = uRange.Find(sW.UsedRange)
If RngFindTitle Is Nothing Then
MsgBox ("Valor não Localizado !")
Else
For Each Cell In uRange
CellTxt = UCase(sW.Cells(Cell.Row, Cell.Column).Text)
FindTitle = InStr(1, CellTxt, x)
If FindTitle <> 0 Then
tRow = Cell.Row
tCol = Cell.Column
Sheets("Plan1").[A2].Value = sW.Cells(tRow, tCol).Offset(0, 1).Value
End If
Next
End If
End Sub
Faça um teste com esta, que acredito que utilizando o Método Find teremos um ganho de performance.
Uma outra obs, é que devemos tomar cuidado ao utilizar UsedRange, pois se apagar o valor da última celula, a mesmaa inda fará parte do UsedRange, a não ser que limpe o conteúdo total.
Para entender melhor o que eu disse acima, na aba que contem os dados pressione simultaneamente asTeclas CTRL + END e veja onde o cursor irá parar, se for uma celula com dados, apague utilizando a Tecla DEL, pressione CTRL+HOME e depois CTRL + END e verá que o cursor irá parar na celula apagada, é isto que o usedRange interpretará.
Não sei se fui claro, mas se realizar o teste entenderá melhor.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 29/04/2012 11:31 am