この記事では、Rangeオブジェクトのfindメソッドを使用して、検索語と同様の値を含むセルを強調表示します。

この例の生データは、会社名、従業員ID、および従業員名で構成されています。さまざまな企業からの生データがあります。

この例では、セルI8で定義された特定の会社名と一致するセルを見つけて強調表示します。

ArrowRawData

特定の会社名のセルを強調表示するには、セルI8に会社名を入力し、[送信]ボタンをクリックします。 「送信」ボタンには「HighlightMatchingResult」マクロが割り当てられています。

ArrowCallingFunction

「HighlightMatchingResult」マクロは、一致する会社名を含むセルを黄色で強調表示します。

ArrowOutput

ロジックの説明

この例では、カスタム関数「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]までご連絡ください