Znajdź metodę obiektu Range

Anonim

W tym artykule użyjemy metody find obiektu Range, aby podświetlić komórkę, która zawiera wartość podobną do wyszukiwanych słów.

Surowe dane dla tego przykładu składają się z nazwy firmy, identyfikatora pracownika i nazwiska pracownika. Posiadamy surowe dane z różnych firm.

W tym przykładzie chcemy znaleźć i podświetlić komórkę, która pasuje do określonej nazwy firmy w komórce I8.

Aby podświetlić komórki z konkretnymi nazwami firmy, wprowadź nazwę firmy w komórce I8 i kliknij przycisk „Prześlij”. Przycisk „Prześlij” jest przypisany do makra „HighlightMatchingResult”.

Makro „HighlightMatchingResult” podświetli komórkę zawierającą pasującą nazwę firmy żółtym kolorem.

Wyjaśnienie logiczne

W tym przykładzie stworzyliśmy niestandardową funkcję „FindRange” i makro „HighlightMatchingResult”.

Funkcja niestandardowa „FindRange” utworzy zakres ze wszystkimi komórkami, które zawierają wartość podobną do szukanej nazwy firmy.

Makro „HighlightMatchingResult” wywoła funkcję niestandardową i podświetli zakres zwrócony przez funkcję niestandardową kolorem żółtym.

Wyjaśnienie kodu

SearchRange.Find(What:=FindItem)

Powyższy kod służy do znalezienia komórki, która zawiera wartość podobną do FindItem.

Unia (zakres znajdowania, zakres dopasowania)

Powyższy kod służy do łączenia dwóch zakresów w jeden zakres.

SearchRange.FindNext(MatchingRange)

Powyższy kod służy do znalezienia następnej komórki, która zawiera wartość podobną do FindItem.

Proszę postępować zgodnie z poniższym kodem!

 Opcja Funkcja jawna FindRange(FindItem As Variant, SearchRange As Range) As Range 'Deklarowanie zmiennych Dim MatchingRange As Range Dim FirstAddress As String With SearchRange 'Znajdowanie zakresu, którego wartość jest zgodna z FindItem Set MatchingRange = .Find(What:=FindItem) 'Sprawdzanie czy istnieje jakiekolwiek dopasowanie If Not MatchingRange Is Nothing Then Set FindRange = MatchingRange 'Pobieranie adresu pierwszego pasującego zakresu FirstAddress = MatchingRange.Address Do 'Union wszystkich zakresów, których wartość jest zgodna z FindItem Set FindRange = Union(FindRange, MatchingRange) 'Finding następny zakres, którego wartość jest zgodna z FindItem Set MatchingRange = .FindNext(MatchingRange) Loop While MatchingRange.Address FirstAddress End If End With End Function Sub HighlightMatchingResult() 'Deklarowanie zmiennych Dim MappingRange As Range Dim UserInput As String 'Pobieranie wartości przez użytkownika z cell I8 UserInput = Range("I8").Value 'Wywołanie funkcji niestandardowej FindRange Set MappingRange = FindRange(UserInput, ActiveSheet.C olumns("A")) 'Podświetlanie mapowanego zakresu żółtym kolorem MappingRange.Interior.Color = RGB(255, 255, 0) End Sub 

Jeśli podobał Ci się ten blog, podziel się nim ze znajomymi na Facebooku. Możesz również śledzić nas na Twitterze i Facebooku.

Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy poprawić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail