エクセルマクロで、全てのシートから特定文字を検索してメッセージボックスに表示する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に含まれない可能性があります。
この記事がお役に立ちますと幸いです。
【エクセルマクロ】別シート・別ファイルをFind検索する
...
「プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA」
ExcelVBAでワンランクアップできる書籍
具体的で応用が利く技をたくさん掲載
リンク