Rangeオブジェクトのメソッドを検索
この記事では、Rangeオブジェクトのfindメソッドを使用して、検索語と同様の値を含むセルを強調表示します。
この例の生データは、会社名、従業員ID、および従業員名で構成されています。さまざまな企業からの生データがあります。
この例では、セルI8で定義された特定の会社名と一致するセルを見つけて強調表示します。
特定の会社名のセルを強調表示するには、セルI8に会社名を入力し、[送信]ボタンをクリックします。 「送信」ボタンには「HighlightMatchingResult」マクロが割り当てられています。
「HighlightMatchingResult」マクロは、一致する会社名を含むセルを黄色で強調表示します。
ロジックの説明
この例では、カスタム関数「FindRange」とマクロ「HighlightMatchingResult」を作成しました。
カスタム関数「FindRange」は、検索された会社名に類似した値を含むすべてのセルで範囲を作成します。
「HighlightMatchingResult」マクロはカスタム関数を呼び出し、カスタム関数によって返される範囲を黄色で強調表示します。
コードの説明
SearchRange.Find(What:= FindItem)
上記のコードは、FindItemと同様の値を含むセルを検索するために使用されます。
Union(FindRange、MatchingRange)
上記のコードは、2つの範囲を1つの範囲に結合するために使用されます。
SearchRange.FindNext(MatchingRange)
上記のコードは、FindItemと同様の値を含む次のセルを見つけるために使用されます。
コードについては以下に従ってください
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
このブログが気に入ったら、FacebookやFacebookで友達と共有してください。
皆様からのご意見をお待ちしております。私たちの仕事を改善し、あなたのために改善する方法をお知らせください。 [email protected]までご連絡ください