1.概要
指定文字を含むセルをすべて検索し塊で返す関数。
(Excelの「すべて検索」を再現したもの)
2.ソースコード
'すべて検索のテスト
Sub testAllFind()
Dim rg As Range
Set rg = ActiveSheet.UsedRange
'デバッグとしてSelect
AllFind("a", rg).Select
End Sub
'「すべて検索」の関数
Function AllFind(findstr As String, findRegion As Range) As Range
Dim firstFound As Range '最初に見つかったセル
Set firstFound = findRegion.Find(findstr)
'1つも見つからなければNothing
If firstFound Is Nothing Then
Set AllFind = Nothing
Exit Function
End If
'-----2つ目以降を検索する処理-----
Dim tempFound As Range '見つかったセルをの一時バッファ
Dim result_ As Range 'return用
'それぞれに最初に見つかったセルをセット
Set tempFound = firstFound
Set result_ = tempFound
Do
'前回の検索結果以降を検索
Set tempFound = findRegion.FindNext(tempFound)
'最初のアドレスに戻ってきたらループ終了
If tempFound.Address = firstFound.Address Then
Exit Do
Else
'returnに加える
Set result_ = Union(result_, tempFound)
End If
Loop
Set AllFind = result_
End Function
3.出力結果
~略~