Encuentra método de objeto Range
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.
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».
La macro «HighlightMatchingResult» resaltará la celda que contiene el nombre de la empresa correspondiente con el color amarillo.
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]