Colegas,
Ainda estou buscando solução para minha planilha.
Consegui fazer uma rotina que coloca o valor, mas apenas na linha do primeiro código encontrado, pois o número de linhas entre os demais é variável.
Estou tentando fazer a busca com a função "Find", num laço with/endwith, mas estou recebendo mensagem de que a variável do objeto ou a variável do bloco não foi definida, mas não encontro onde está o erro.
Segue minha rotina, pedindo para que algum dos colegas mais experientes me oriente...
Agradeço qualquer colaboração. Obrigado.
PS: A planilha utilizada é a mesma anexada acima.
Public Sub BuscaValor()
Dim InStr As String
Dim codigos, textos, i, Texto As Variant
Dim vCod, TxtVal As String
Dim Lin As Integer
Dim lrw As Range
Dim Wb As Workbook
Dim Ws As Worksheet
codigos = ActiveSheet.Range("A2:A" & ActiveSheet.Range("A1000000").End(xlUp).Row)
textos = ActiveSheet.Range("D2:D" & ActiveSheet.Range("D1000000").End(xlUp).Row)
vCod = "00020015"
Set Wb = ThisWorkbook
Set Ws = Worksheets("Planilha1")
For i = LBound(codigos) To UBound(codigos)
For Each Texto In textos
If InStr(Texto, codigos(i, 1)) > 0 Then
ActiveSheet.Cells(i + 1, "B") = "SIM"
With Ws
lrw = .Range("D:D").Find(What:=vCod, _
After:=.Range("D1"), _
LookAt:=xlPart, _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
End With
TxtVal = Cells(lrw, "D").Value
vCod = Left(TxtVal, 4)
If vCod = "0002" Then
ActiveSheet.Cells(i + 1, "C") = Trim$(Mid$(TxtVal, 57, 12)) 'Se código COD.V/D = 0002
Else: vCod = "0015"
ActiveSheet.Cells(i + 1, "C") = Trim$(Mid$(TxtVal, 85, 12)) 'Se código COD.V/D = 0015
End If
Exit For
End If
Next
Next
End Sub
Postado : 15/03/2023 4:18 pm