Pesquisar na Comunidade
Mostrando resultados para as tags ''find''.
Encontrado 2 registros
-
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)
-
Pessoal, Estou tendo um problema na elaboração de uma planilha. Estou desenvolvendo uma planilha que irá verificar se determinado equipamento já existe na planilha, existindo ela irá somente atualizar informações desse equipamento, e caso não exista, ela irá criar essas informações. Meu problema é exatamente no método find. Segue abaixo o meu código. Sub Gravar_Atualizar_Dados() If Range("I8").Value = "" Then MsgBox "Insira o TAG do equipamento!" Else Dim TAG As String Dim CellFinder As Long Dim LastCell As Integer Dim Unidade As String TAG = Range("I8").Value Unidade = Range ("E8").Value Sheets("DataBase").Select CellFinder = Columns(1).Find(TAG,,,,xlByColumns, xlPrevious) If CellFinder is Nothing Then LasCell = Range("A65000").End(xlUp).Row + 1 Range ("A" & LastCell).Value = TAG Range ("B" & LastCell).Value = Unidade MsgBox "Novo equipamento cadastrado com sucesso!" Else CellFinder = Columns(1).Find(TAG,,,,xlByColumns, xlPrevious).Row + 1 Range ("B" & CellFinder).Value = unidade MsgBox "Equipamento atualizado com sucesso!" End Sub