Neste artigo, usaremos o método find do objeto Range para destacar a célula que contém o valor semelhante às palavras de pesquisa.
Os dados brutos para este exemplo consistem no nome da empresa, id do funcionário e nome do funcionário. Temos dados brutos de diferentes empresas.
Neste exemplo, queremos localizar e destacar a célula que corresponde ao nome da empresa definido em particular na célula I8.
Para destacar as células com nomes de empresas específicos, insira o nome da empresa na célula I8 e clique no botão “Enviar”. O botão “Enviar” é atribuído à macro “HighlightMatchingResult”.
A macro “HighlightMatchingResult” destacará a célula que contém o nome da empresa correspondente com a cor amarela.
Explicação lógica
Neste exemplo, criamos uma função personalizada “FindRange” e uma macro “HighlightMatchingResult”.
A função personalizada “FindRange” criará um intervalo com todas as células que contenham valor semelhante ao nome da empresa pesquisada.
A macro “HighlightMatchingResult” chamará a função personalizada e destacará o intervalo retornado pela função personalizada na cor amarela.
Explicação do código
SearchRange.Find (What: = FindItem)
O código acima é usado para encontrar a célula que contém um valor semelhante a FindItem.
Union (FindRange, MatchingRange)
O código acima é usado para combinar dois intervalos em um único intervalo.
SearchRange.FindNext (MatchingRange)
O código acima é usado para encontrar a próxima célula que contém um valor semelhante a FindItem.
Siga abaixo para o código
Opção Explícita Função FindRange (FindItem As Variant, SearchRange As Range) As Range 'Declarando variáveis Dim MatchingRange As Range Dim FirstAddress As String With SearchRange' Encontrando o intervalo cujo valor corresponde a FindItem Defina MatchingRange = .Find (What: = FindItem) 'Checking se existe alguma correspondência If Not MatchingRange Is Nothing Then Defina FindRange = MatchingRange 'Obtendo o endereço do primeiro intervalo correspondente FirstAddress = MatchingRange.Address Do' União de todos os intervalos cujo valor corresponde a FindItem Definir FindRange = Union (FindRange, MatchingRange) 'Encontrar o próximo intervalo cujo valor corresponde a FindItem Definir MatchingRange = .FindNext (MatchingRange) Loop While MatchingRange.Address FirstAddress End If End With End Função Sub HighlightMatchingResult () 'Declarando variáveis Dim MappingRange As Range Dim UserInput As String' Obtendo valor inserido pelo usuário de célula I8 UserInput = Range ("I8"). Value 'Chamando a função personalizada FindRange Definir MappingRange = FindRange (UserInput, ActiveSheet.C olumns ("A")) 'Destacando o intervalo mapeado com a cor amarela MappingRange.Interior.Color = RGB (255, 255, 0) End Sub
Se você gostou deste blog, compartilhe com seus amigos no Facebook. Além disso, você pode nos seguir no Twitter e no Facebook.
Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar nosso trabalho e torná-lo melhor para você. Escreva para nós no site de e-mail