Zoekmethode van Range-object

Anonim

In dit artikel gebruiken we de zoekmethode van het bereikobject om de cel te markeren die de waarde bevat die vergelijkbaar is met die van zoekwoorden.

Ruwe gegevens voor dit voorbeeld bestaan ​​uit bedrijfsnaam, werknemer-ID en werknemersnaam. We hebben ruwe data van verschillende bedrijven.

In dit voorbeeld willen we de cel zoeken en markeren die overeenkomt met een bepaalde gedefinieerde bedrijfsnaam in cel I8.

Om de cellen met bepaalde bedrijfsnamen te markeren, voert u de bedrijfsnaam in cel I8 in en klikt u op de knop "Verzenden". De knop "Verzenden" is toegewezen aan de macro "HighlightMatchingResult".

De macro "HighlightMatchingResult" markeert de cel die de overeenkomende bedrijfsnaam bevat met gele kleur.

Logische uitleg

In dit voorbeeld hebben we een aangepaste functie "FindRange" en een macro "HighlightMatchingResult" gemaakt.

Aangepaste functie "FindRange" zal een bereik maken met alle cellen die een waarde bevatten die vergelijkbaar is met de gezochte bedrijfsnaam.

De macro "HighlightMatchingResult" roept de aangepaste functie aan en markeert het bereik dat wordt geretourneerd door de aangepaste functie in gele kleur.

Code uitleg

SearchRange.Find(What:=FindItem)

Bovenstaande code wordt gebruikt om de cel te vinden die een waarde bevat die vergelijkbaar is met FindItem.

Unie (FindRange, MatchingRange)

Bovenstaande code wordt gebruikt om twee bereiken te combineren tot één bereik.

SearchRange.FindNext(Matching Range)

Bovenstaande code wordt gebruikt om de volgende cel te vinden die een waarde bevat die vergelijkbaar is met FindItem.

Volg hieronder voor de code:

 Optie Expliciete functie FindRange(FindItem As Variant, SearchRange As Range) As Range 'Variabelen declareren Dim MatchingRange As Range Dim FirstAddress As String With SearchRange 'Het bereik zoeken waarvan de waarde overeenkomt met FindItem Set MatchingRange = .Find(What:=FindItem) 'Controleren of er een overeenkomst bestaat If Not MatchingRange Is Nothing Stel dan FindRange = MatchingRange in 'Het adres van het eerste overeenkomende bereik ophalen FirstAddress = MatchingRange.Address Do 'Union van alle bereiken waarvan de waarde overeenkomt met FindItem Set FindRange = Union (FindRange, MatchingRange) 'Finding het volgende bereik waarvan de waarde overeenkomt met FindItem Set MatchingRange = .FindNext(MatchingRange) Loop While MatchingRange.Address FirstAddress End If End With End Function Sub HighlightMatchingResult() 'variabelen declareren Dim MappingRange As Range Dim UserInput As String 'Waarde-invoer ontvangen door gebruiker van cel I8 UserInput = Range ("I8"). Waarde 'Aanroep van FindRange aangepaste functie Set MappingRange = FindRange (UserInput, ActiveSheet.C olumns("A")) 'Het toegewezen bereik markeren met gele kleur MappingRange.Interior.Color = RGB(255, 255, 0) End Sub 

Als je deze blog leuk vond, deel hem dan met je vrienden op Facebook. Ook kunt u ons volgen op Twitter en Facebook.

We horen graag van u, laat ons weten hoe we ons werk kunnen verbeteren en voor u kunnen verbeteren. Schrijf ons op de e-mailsite