重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Excel2000を使用しています。
複数のシート間である文字列を検索する方法はあるでしょうか?
1ファイルの中に(30sheet)程度有り、データを分離記載してあります。このファイルのシートのどこかにある文字列を1回の検索操作で見つける方法が有れば教えてください。宜しくお願いします。

A 回答 (6件)

#4です。



Sub Test1()
Dim i As Integer, ws As Worksheet, c
Dim fAddress, fw As String
fw = Application.InputBox("検索文字を指定", "検索", Type:=2)
If fw = "" Then Exit Sub
For i = ActiveSheet.Index To Worksheets.Count
Set ws = Worksheets(i)
With ws.Cells
 Set c = .Find(fw, LookIn:=xlValues)
  If Not c Is Nothing Then
   fAddress = c.Address
   Do
    ws.Activate: c.Activate
    If MsgBox("次を検索しますか?", vbYesNo _
      + vbQuestion, "検索") = vbNo Then Exit For
    Set c = .FindNext(c)
   Loop While Not c Is Nothing And c.Address <> fAddress
  End If
End With
Next i
End Sub

通常の検索ダイアログも使う別パターン
ただし、非常に使いづらい

 別シートを続けて検索する時は「閉じる」
 途中で検索を打切る時は「×」

Sub Test2()
Dim fw As String, i As Integer
fw = Application.InputBox("検索文字を指定", "検索", Type:=2)
If fw = "" Or fw = "False" Then Exit Sub
For i = ActiveSheet.Index To Worksheets.Count
 Worksheets(i).Activate
 Worksheets(i).Cells.Select
 If Application.Dialogs(xlDialogFormulaFind).Show(fw) _
   = False Then
   ActiveCell.Select: Exit For
 End If
 ActiveCell.Select
Next i
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
Sub Test1()でいけそうです。

お礼日時:2004/05/10 14:56

No.2です。


当方Excel2002でしたので、仕様が若干違うようで、Excel2000ではオプションボタンが無いんですね。
申し訳ありませんでした。

もう一つシートタブを選択する際に、
どこかのシートタブを右クリックして、
 すべてのシートを選択
という項目はありますか?
これが出来れば解決ですよね。
    • good
    • 0
この回答へのお礼

>どこかのシートタブを右クリックして、
>すべてのシートを選択
新しい機能を知りました。
ありがとうございました。

お礼日時:2004/05/10 14:57

私も他の方の回答どおり、



  Ctrlを押しながら
  Shiftを押しながら
  Shift + Ctrl + PageUp又はPageDown
  シート名のタブを右クリックし「全てのシートを選択」
  マクロなら
  Sub Test()
   ThisWorkbook.Worksheets.Select
   Application.Dialogs(xlDialogFormulaFind).Show
  End Sub

などの方法で複数シートを選択して検索すれば、出来ると思ってました。

ただ、Excel2000で試したところ各シートのデータ量が揃っていない場合や最初は検索出来るのに再度実行するとダメなど、非常に不安定で上手く行きません。

Excel2000 以外の環境だとどうなんでしょうか?

また #1さんの『検索で「すべて検索」』や #2さんの『[オプション]ボタンを押して、検索場所をシートからブックに変更』はExcel2000では見当たらないようです。

ちょっと大仰なコードですが、マクロを書いてみました。
選択シートより、右側のシートを対象に検索します。

Sub Test1()
Dim i As Integer, ws As Worksheet, c
Dim fAddress, fw As String
fw = Application.InputBox("検索文字を指定", "検索", Type:=2)
If fw = "" Then Exit Sub
For i = ActiveSheet.Index To Worksheets.Count
Set ws = Worksheets(i)
With ws.Cells
 Set c = .Find(fw, LookIn:=xlValues)
  If Not c Is Nothing Then
   fAddress = c.Address
   Do
    MsgBox ws.Name & "!" & c.Address
    Set c = .FindNext(c)
   Loop While Not c Is Nothing And c.Address <> fAddress
  End If
End With
Next i
End Sub

この回答への補足

ありがとうございます。
マクロはokでした。
贅沢を言えば通常の検索のように、カーソルが件sかういちへ動いてくれるとよりよいのですが、できないでしょうか?

補足日時:2004/05/09 16:16
    • good
    • 0

シートタブをCTRLキーを押しながらクリックし、


編集-検索-(検索する文字列)に検索文字列を入力し
「次を検索」を次々にクリックすると別の多シートに亘って検索できます。
もし何度もする必要があって、毎回上記の「シートタブをCTRLキーを押しながらクリック」が面倒なら
シートにコマンドボタンを貼りつけ、そのクリックイベントに
Private Sub CommandButton1_Click()
Sheets(Array("sheet1", "sheet2", "sheet3")).Select
End Sub
をコピペすれば、ワンクリックでシートを選択状態に出来ます。
Arrayの中に選択したいSheet名を””で囲って、で区切って並べます。30シートもテストしてませんが大丈夫かどうか。VBAの継続行の折り返し表記法は1スペース+1アンダーバー+改行です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
だんだん近づいてきたような。
確かに便利です。
もう少し募集させてもらいます。

お礼日時:2004/05/09 16:15

[編集]→[検索]



Ctrl + F
で検索ウィンドウが出たら、[オプション]ボタンを押して、検索場所をシートからブックに変更すれば、ブック全体を検索出来ます。

また、特定のシートを決め内での方法としては、
Ctrlを押しながら、検索したいシートをすべてクリックして選択した状態で検索すれば良いですね。
    • good
    • 0
この回答へのお礼

ありがとうございます。
エクセル2000には、[オプション]ボタンはないです。残念です。
シートを選択してはOKでした。
ただ、シート数が多いので毎回はつらいかも。

お礼日時:2004/05/09 16:10

検索で「すべて検索」でできませんか?

    • good
    • 0
この回答へのお礼

ありがとうございます。
エクセル2000には「すべて検索」がないのものですから。

お礼日時:2004/05/09 16:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!