Ir para conteúdo
Fórum Script Brasil

Pergunta

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
 

 

Editado por Rogerio Barbosa
Erro ortográfico
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...