
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ブック...
-
エクセルのVBAで集計をしたい
-
コマンドボタンがデザインモー...
-
エクセルでシートの並び替えで...
-
【Excel】複数あるシート上の住...
-
エクセルVBAでcmbBoxのプロパテ...
-
Excelマクロ(Range)につ...
-
エクセル2010 マクロを実行す...
-
EXCELの起動時に常に同じ...
-
エクセルを開いたとき常に同じ...
-
マクロを複数シートに実行する...
-
Excelのマクロの呼び出し元を知...
-
【Excel VBA】別のマクロで呼び...
-
【マクロ】【配列】3つのシー...
-
excelの不要な行の削除ができな...
-
エクセルを共有するとPCによっ...
-
エクセルのシー名を二段表示に...
-
Excelの行をコピーして貼り付け...
-
特定のセルに数値が入っている...
-
1ヶ月分の日付を一度に出す方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのVBAで集計をしたい
-
【マクロ】【相談】Excelブック...
-
コマンドボタンがデザインモー...
-
エクセルを開いたとき常に同じ...
-
【 Excel】シートの見出しに自...
-
マクロを複数シートに実行する...
-
エクセル ヘッダー(フッター)...
-
EXCELでマクロを使わずに図形の...
-
Excelのマクロの呼び出し元を知...
-
EXCELのエラー
-
エクセルでシートの並び替えで...
-
マクロを特定の複数シートで実...
-
エクセルで複数のSheetを一括フ...
-
VBA シート名を先月の名前に...
-
メッセージボックスでシート名...
-
マクロ 各シートの決められた位...
-
Excel:複数シートから条件に合...
-
EXCELでワークシートを開いたら...
-
エクセルのチェックボックス
-
エクセルVBAでcmbBoxのプロパテ...
おすすめ情報
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
上記をやりましたが、うまくいかないです。
キャンセルを押すとループになってしまします
全シートから検索はどのようにしたらよいのでしょうか