Question

Olá !  Sou leigo em programação e estou engatinhando em  VBA por conta própria fazem alguns dias

Criei um código para a partir de uma lista de caracteres especiais relacionados na coluna A na sheet "Base Caracteres", encontrá-los e marcá-los na sheet "Base Validação".

Apesar de possivelmente o código não ser o mais enxuto ou mais adequado, ele funciona corretamente até que não encontre um dos caracteres pesquisados, dando o erro run-time 91.

Já tentei usar a função On Error GoTo, que deu certo no primeiro Loop, porém a partir do segundo caracter não encontrado, não funciona mais.

Tentei a função If Not "Variável" is Nothing Then, porém não consegui fazer funcionar.

Gostaria muito da valiosa ajuda de vocês para fazer com que o código escrito funcione, e dessa forma poderei entendê-lo e posteriormente aprimorá-lo.

Segue o código:-

Sub Macro1()

'Declara Variáveis
    Dim W1 As Worksheet
    Dim W2 As Worksheet
    Dim P As Long
    Dim S As String
    Dim V As String
    Dim L As String
           
'Inicializa variáveis
    Set W1 = Sheets("Base Validação")
    Set W2 = Sheets("Base Caracteres")
    L = 1
    V = W2.Range("A" & L).Value
    
'Inicia rotina de Loop que buscará o valor (S) a ser procurado
    Do While V <> ""
        S = W2.Range("A" & L).Value
        W1.Select
        Range("A2").Select
        
'Inicia a busca do valor adicionado à variável S em toda a Sheet "Base Validação"
        Cells.Find(What:=S, After:=ActiveCell, LookIn:=xlValues, LookAt _
             :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
             False, SearchFormat:=False).Activate

'Muda a cor da célula onde o valor foi encontrado
        With ActiveCell.Font
            .Color = 255
            .Bold = True
        End With
        
'Muda a cor da linha onde o valor foi encontrado
        With ActiveCell.EntireRow.Interior
            .PatternColorIndex = xlAutomatic
            .Color = 65535
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        
'Inicia a variável "P" com o valor da célula ativa (será usada como marcação)
        P = ActiveCell.Row
        
'Inicia o Loop da rotina Find Next
        Do
            Cells.FindNext(After:=ActiveCell).Activate
            
'Muda a cor da célula onde o valor foi encontrado
            With ActiveCell.Font
                .Color = 255
                .Bold = True
            End With
            
'Muda a cor da linha onde o valor foi encontrado
            With ActiveCell.EntireRow.Interior
                 .PatternColorIndex = xlAutomatic
                 .Color = 65535
                 .TintAndShade = 0
                 .PatternTintAndShade = 0
             End With
'Realiza o Loop de forma a continuar procurando "S" em todas as células enquanto a célula ativa for maior que P
        Loop While ActiveCell.Row > P
    
'Atualiza a variável L em 1 para avançar para a próxima linha da sheet "Base Caracter" e carregar o novo valor de "S"
        
    L = L + 1
        
    Loop
    
End Sub
 

 

Edited by Rogerio Barbosa
Erro ortográfico

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this