エクセルマクロ 全シート検索し結果をメッセージボックス表示する

VBA-複数シートを検索し結果をメッセージボックス表示-アイキャッチ ExcelVBA

エクセルマクロで、全てのシートから特定文字を検索してメッセージボックスに表示するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひお試しください!

全シートを検索し結果をメッセージボックス表示

以下のExcelVBAを実行すると、すべてのシートから文字検索して見つかったらメッセージボックスに表示します。


Sub 複数シートを検索し結果をメッセージボックス表示()

Dim Target As String
Dim Ws As Worksheet
Dim Rng As Range

    '全シートをループ
    For Each Ws In Worksheets
    
        Ws.Select
            
        'セル範囲をループ
        For Each Rng In Range("C1:C15")
    
            '「検討中」だったら
            If Rng.Value = "検討中" Then
    
                'セル番地を格納
                Target = Target & Ws.Name & ":" & Rng.Address & vbCrLf
            End If
        Next
    Next

    '検索結果が見つかったらメッセージボックスに表示
    If Target <> "" Then
        Target = Left(Target, Len(Target) - 1)
        MsgBox Target
    End If

End Sub

 

マクロ実行前

ブック全体から、C列が「検討中」となっているセルを検索します。


 

マクロ実行後

該当文字列が見つかった場合、

メッセージボックスにシート名とセル番地を表示します。


 

全シートを検索し結果をメッセージボックス表示(Find使用)

以下のExcelVBAを実行すると、指定文字を探して見つかったらメッセージボックスに表示します。


Sub シート全体から検索し結果をMsgBox表示()

Dim Target As String
Dim Ws As Worksheet
Dim a  As Range
Dim b  As Range

    '全シートをループ
    For Each Ws In Worksheets
        
        Ws.Select
        
        Set a = Cells.Find(What:="検討中", LookAt:=xlPart)
    
        '検索結果が無ければ処理終了
        If a Is Nothing Then Exit Sub
        
        'シート名とセル番地を取得
        Target = Target & Ws.Name & ":" & a.Address & vbCrLf
        
        '続けて検索するための設定
        Set b = a
        
        Do
            '同シートをさらに検索
            Set b = Cells.FindNext(After:=b)
            
            '検索結果が無ければ処理終了
            If b Is Nothing Then Exit Do
     
            'ヒットしたセルが最初に検索したセル番地と同じだったら処理終了
            If b.Address = a.Address Then Exit Do
            
            'シート名とセル番地を取得
            Target = Target & Ws.Name & ":" & b.Address & vbCrLf
        Loop
    Next

    '検索結果が見つかったらメッセージボックスに表示
    If Target <> "" Then
        Target = Left(Target, Len(Target) - 1)
        MsgBox Target
    End If

End Sub

 

マクロ実行前

ワークブック全体から、C列が「検討中」となっているセルを検索します。


 

マクロ実行後

該当する文字が見つかったら、

メッセージボックスにシート名とセル番地を表示します。


 
 
※MsgBoxでの表示には文字数の制限があるようです。

 検索ヒット数が100個以上ある場合は、

 一部(後半)の処理結果がMsgBoxに含まれない可能性があります。

 
この記事がお役に立ちますと幸いです。
 

【エクセルマクロ】ワークシート処理を自動化する:超便利39選
...

 

「プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA」
ExcelVBAでワンランクアップできる書籍
具体的で応用が利く技をたくさん掲載