検索結果のセル(Range)を返す関数
タイトルのマクロは、以下です。
'************************
'* 検索結果のセル(Range)を返す関数
'* str:検索文字
'* rng:検索範囲のセル
'* myLookAt:デフォルトで「部分一致」、xlWholeを指定すると「完全一致」
'* myMatch:デフォルトで「大文字小文字、半角全角を区別しない」、trueをしてすると「区別する」
Function FuncFind(ByVal str As String, ByVal rng As Range, _
Optional ByVal myLookAt As Long = xlPart, _
Optional ByVal myMatch As Boolean = False) As Range
Set FuncFind = rng.Find(What:=str, _
LookIn:=xlValues, _
LookAt:=myLookAt, _
MatchCase:=myMatch, _
MatchByte:=myMatch)
' rng:検索範囲
' What:検索文字
' LookIn:検索対象、値(xlValues)
' LookAt:完全一致(xlWhole)、部分一致(xlPart)
' MatchCase:大文字と小文字を区別(True)、区別しない(False)
' MatchByte:半角文字と全角文字を区別(True)、区別しない(False)
End Function
使用例は、以下です。
Sub 使用例()
Dim rng As Range
Dim rngFind As Range
' 検索範囲は、このブックのアクティブシート全体
Set rng = ThisWorkbook.ActiveSheet.Cells
' 部分一致、区別しない、で検索
Set rngFind = FuncFind("A文字", rng)
' 見つからなかったときは、メッセージを表示させる
If rngFind Is Nothing Then
MsgBox "見つかりません"
Else
' 見つかったセルを選択
rngFind.Select
Stop ' 一時停止
End If
' 完全一致、区別する、で検索し、選択
FuncFind("B文字", rng, xlWhole, True).Select
' 検索結果がなければ、エラー発生します。
End Sub
このマクロを実行すると、このブックのアクティブシートのシート全体を検索します。
最初は、「部分一致」「大文字小文字、半角全角を区別しない」条件で文字列「A文字」を検索して、あればそのセルを選択し、なければ、「見つかりません」と表示されます。
マクロを再スタートさせると、「完全一致」「大文字小文字、半角全角を区別する」条件で文字列「B文字」を検索して、あればそのセルを選択し、なければ、エラーとなります。