En este artículo, utilizaremos el método de búsqueda del objeto Range para resaltar la celda que contiene el valor similar a las palabras de búsqueda.

Los datos sin procesar para este ejemplo consisten en el nombre de la empresa, la identificación del empleado y el nombre del empleado. Disponemos de datos brutos de distintas empresas.

En este ejemplo, queremos encontrar y resaltar la celda que coincida con el nombre de empresa definido en particular en la celda I8.

ArrowRawData

Para resaltar las celdas con nombres de empresas particulares, ingrese el nombre de la empresa en la celda I8 y haga clic en el botón «Enviar». Al botón «Enviar» se le asigna la macro «HighlightMatchingResult».

ArrowCallingFunction

La macro «HighlightMatchingResult» resaltará la celda que contiene el nombre de la empresa correspondiente con el color amarillo.

ArrowOutput

Explicación lógica

En este ejemplo, hemos creado una función personalizada «FindRange» y una macro «HighlightMatchingResult».

La función personalizada «FindRange» creará un rango con todas las celdas que contienen un valor similar al nombre de la empresa buscada.

La macro «HighlightMatchingResult» llamará a la función personalizada y resaltará el rango devuelto por la función personalizada en color amarillo.

Explicación del código

SearchRange.Find (Qué: = FindItem)

El código anterior se usa para encontrar la celda que contiene un valor similar a FindItem.

Unión (FindRange, MatchingRange)

El código anterior se usa para combinar dos rangos en un solo rango.

SearchRange.FindNext (MatchingRange)

El código anterior se usa para encontrar la siguiente celda que contiene un valor similar a FindItem.

Siga a continuación el código

Option Explicit

Function FindRange(FindItem As Variant, SearchRange As Range) As Range

'Declaring variables

Dim MatchingRange As Range

Dim FirstAddress As String

With SearchRange



'Finding the range whose value match with FindItem

Set MatchingRange = .Find(What:=FindItem)



'Checking whether any match exist

If Not MatchingRange Is Nothing Then



Set FindRange = MatchingRange

'Getting the address of first matching range

FirstAddress = MatchingRange.Address



Do

'Union of all the ranges whose value match with FindItem

Set FindRange = Union(FindRange, MatchingRange)

'Finding the next range whose value match with FindItem

Set MatchingRange = .FindNext(MatchingRange)

Loop While MatchingRange.Address <> FirstAddress

End If



End With

End Function

Sub HighlightMatchingResult()

'Declaring variables

Dim MappingRange As Range

Dim UserInput As String

'Getting value input by user from cell I8

UserInput = Range("I8").Value

'Calling FindRange custom function

Set MappingRange = FindRange(UserInput, ActiveSheet.Columns("A"))

'Highlighting the mapped range with Yellow color

MappingRange.Interior.Color = RGB(255, 255, 0)

End Sub

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]