Método de localização do objeto Range

Anonim

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