
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
マクロでやる必要はなく、エクセルの検索機能で可能です。
全シートを選択した状態で検索すれば、全シートが検索範囲になります。
添付図では『すべて検索』の例を示していますが、通常の『検索』でもよいです。
リスト化されるかどうかの違いです。

No.3
- 回答日時:
わたし流にアレンジしてみました。
やってみると、p1:のジャンプ先が必要ありません。xlWholeiにいているので、入力にはワイルドカードが利きます。Application.Goto を使うのがミソでしょうか。
それはともかく、ここの掲示板の質問で、マクロで、ワークブック全体の検索を既存の検索を操作してできないのかな、という質問がでましたが、わたしにとっては難問のひとつです。
'//標準モジュール
Sub SearchText()
Dim s As Variant
Dim sh As Worksheet
Dim FirstAddress As String
Dim x As Range
s = Application.InputBox("検索文字列=")
If s = False Then Exit Sub
For Each sh In ActiveWorkbook.Worksheets
Set x = sh.UsedRange.Find(What:=Trim(s), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
If Not x Is Nothing Then
Application.Goto x
MsgBox sh.Name & "!" & x.Address
FirstAddress = x.Address
Do
Set x = sh.UsedRange.FindNext(x)
If FirstAddress = x.Address Then Exit Do
Application.Goto x
MsgBox sh.Name & "!" & x.Address 'メッセージボックスの前にセルに飛ぶ
Loop
End If
FirstAddress = ""
Next
End Sub
No.2
- 回答日時:
No1です
『検索値を含むシートのみ表示状態にする』ということで良いのなら、こんな感じでいけるのではないかと思います。
Sub Sample()
Dim str As String
Dim sh As Worksheet, rg As Range
str = InputBox("検索文字列=")
If str = "" Then Exit Sub
For Each sh In Worksheets
Set rg = sh.Cells.Find(what:=str, LookAt:=xlWhole)
sh.Visible = Not rg Is Nothing
Next sh
End Sub
No.1
- 回答日時:
こんにちは
セル範囲内の文字列を検索するなら、Range.Findメソッドを利用するのが手っ取り早いと思われます。
複数シートをまとめては無理っぽいので、各シートをループして検索すれば実現できるでしょう。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
>検索に含むシートのみ表示とかできますでしょうか
シートを順に検索して、1つでも見つかればそのシートは表示、無ければ非表示にすればよさそう。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
【マクロ】【相談】Excelブック...
-
【 Excel】シートの見出しに自...
-
エクセルのVBAで集計をしたい
-
マクロを特定の複数シートで実...
-
【Excel】複数あるシート上の住...
-
Excelのマクロの呼び出し元を知...
-
マクロを複数シートに実行する...
-
エクセルで回数をカウントする...
-
エクセルでセルの値をクランプ...
-
エクセルを開いたとき常に同じ...
-
エクセルでシートの並び替えで...
-
エクセルを閉じる際に自動保存...
-
エクセル ヘッダー(フッター)...
-
エクセル シート保護をかける...
-
エクセルファイルのシート毎の容量
-
excelの不要な行の削除ができな...
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
エクセルを共有するとPCによっ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
エクセルのVBAで集計をしたい
-
【 Excel】シートの見出しに自...
-
【マクロ】【相談】Excelブック...
-
エクセルを開いたとき常に同じ...
-
マクロを複数シートに実行する...
-
EXCELのエラー
-
Excelのマクロの呼び出し元を知...
-
VBAで条件によってシート見出し...
-
マクロを特定の複数シートで実...
-
VBA シート名を先月の名前に...
-
EXCELでマクロを使わずに図形の...
-
エクセルのチェックボックス
-
エクセルでシートの並び替えで...
-
エクセルの複数のワークシート...
-
EXCELでワークシートを開いたら...
-
エクセルで複数のSheetを一括フ...
-
エクセルで、マクロボタンの表...
-
ExcelのSheetに作られたMacro1...
-
エクセル・複数のシートを一度...
おすすめ情報
s = InputBox("検索文字列=")
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
Set x = sh.Cells.Find(what:=s)
If x Is Nothing Then GoTo p1
MsgBox sh.Name & x.Address
b = sh.Name & x.Address
sh.Activate
x.Activate
'---
Do
Set y = sh.Cells.FindNext(after:=ActiveCell)
If y Is Nothing Then GoTo p1
If sh.Name & y.Address = b Then GoTo p1
MsgBox sh.Name & y.Address
y.Activate
Loop
p1:
Next
End Sub
上記をやりましたが、うまくいかないです。
キャンセルを押すとループになってしまします
全シートから検索はどのようにしたらよいのでしょうか