Pesquisar na Comunidade
Mostrando resultados para as tags ''find next''.
Encontrado 1 registro
-
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
- 1 resposta
-
- find next
- run-time error 91
- (e %d mais)