Notifications
Clear all

Destacar partes de texto

5 Posts
2 Usuários
2 Reactions
808 Visualizações
Bautto
(@bautto)
Posts: 70
Estimable Member
Topic starter
 

Colegas, boa tarde.

Tenho a rotina abaixo, que busca a existência de documentos, usando como base os dados da coluna "A", que são meses e anos e na coluna "B", coloca um "SIM", se o documento existe.

Preciso que na coluna "C" seja colocado o valor correspondente ao primeiro código de pagamentos, que pode ser "0002" ou "0015", sendo a posição desse valor diferente em cada código, conforme ressaltado nas cores, nos documentos.

Até a primeira parte, funciona bem, mas estou com dificuldades para encontrar a saída para a segunda, com os valores.

Peço ajuda aos colegas mais experientes deste Fórum. 

Agradeço toda a colaboração. Obrigado.

Public Sub BuscaValor()

Dim InStr                       As String
Dim codigos, textos, i, Texto   As Variant

codigos = ActiveSheet.Range("A2:A" & ActiveSheet.Range("A1000000").End(xlUp).Row)
textos = ActiveSheet.Range("D2:D" & ActiveSheet.Range("D1000000").End(xlUp).Row)

         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"
                    '??????????????
                    'ActiveSheet.Cells(i + 1, "C") = Trim$(Mid$(Texto, 57, 12)) 'Se código COD.V/D = 0002
                    'ActiveSheet.Cells(i + 1, "C") = Trim$(Mid$(Texto, 85, 12)) 'Se código COD.V/D = 0015
            Exit For
                End If
            Next
        Next

End Sub
 
Postado : 14/03/2023 3:06 pm
Bautto
(@bautto)
Posts: 70
Estimable Member
Topic starter
 

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
kev027
(@kev027)
Posts: 64
Trusted Member
 

Boa tarde, Bautto.

Também tentei fazer com .Find(), mas encontrava o mesmo problema da linha entre os valores serem variáveis.

No entanto, acredito que se usassemos .Find() a partir da linha do documento encontrado dará certo. Até conseguia o número "0002", porém era "0002" dos primeiros documentos independente se existia no Banco de dados ou não.

 
Postado : 15/03/2023 5:01 pm
kev027
(@kev027)
Posts: 64
Trusted Member
 

Boa noite Bautto.

Segue planilha, confesso que deu um trabalhinho kkk

Apesar de não ter usado Array para melhor desempenho da macro(sou péssimo com Arrays), acredito que funciona da forma solicitada.

 
Postado : 15/03/2023 11:18 pm
Bautto reacted
Bautto
(@bautto)
Posts: 70
Estimable Member
Topic starter
 

Caro   kev027, boa tarde.

Meu amigo, deixe de ser modesto... estou vendo que deu um trabalhão!!!

Como disse, procurei usar a função "Find", mas só cheguei no meio do caminho... você mostrou o resto da estrada.

Agradeço imensamente sua colaboração. Muito obrigado mesmo!!

 
Postado : 16/03/2023 2:51 pm
kev027 reacted