LoginSignup
1
1

More than 5 years have passed since last update.

VBA_「すべて検索」関数

Posted at

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.出力結果

~略~

4.出典

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1