全件検索

なんで「全てを検索」ボタンはあるのに、ExcelVBAの標準機能として提供されとらんのだ。

Option Explicit
Public Function 全件検索(ByVal シート名 As String, ByVal 検索範囲 As String, ByVal キーワード As String) As Integer
    全件検索 = 検索(Worksheets(シート名).Range(検索範囲), キーワード)
End Function

Function 検索(ByVal 検索範囲 As Range, ByVal キーワード As String) As Integer
    Dim c As Range
    Dim firstAddress As String
    
    Dim セル数 As Integer
    セル数 = 0
    
    Set c = 検索範囲.Find(What:=キーワード, LookIn:=xlValues, LookAt:=xlPart)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            セル数 = セル数 + 1
            Set c = 検索範囲.Find(What:=キーワード, After:=c)
            If c Is Nothing Then
                Exit Do
            End If
        Loop Until firstAddress = c.Address
    End If
    
    検索 = セル数
End Function