• 締切済み

マクロを使用してBook内を検索する方法

おはようございます。 質問を読んで頂き、ありがとうございます。 私が質問したいことは【マクロを使用してBook内を検索する方法】になります。 正直、マクロには詳しくないのですが色々なサイトを見ながら作っては見たものの希望道理に検索できないのが現状です。 実際に行いたい作業は、sheet1には○○市内の薬局名を入力、sheet2には△△市内の薬局名を入力、sheet3には□□市内の薬局名を入力・・といったように、1つのsheetにその市内にある薬局を打ち込みました。 そこで、マクロを実行し薬局名を打ち込むと、その薬局名の書いてあるセルに飛ぶような設定にしたいのですが、どうも上手くいきません。 例えば、sheet1内でマクロを実行した場合はsheet1内に薬局名があればセルにうまく飛ぶのですが、sheet1内にない薬局(sheet2などにある場合)は【実行時エラー オブジェクト変数またはwithブロック変数が設定されたいません】という表記が出てしまいます。 希望としては、sheet1でマクロを実行しても、全体を検索できるようにしたいのですが、可能なのでしょうか? マクロには以下のように登録しました。 Sub Macro1() ' ' ' a = InputBox("検索したい文字を入力してください。") Cells.Find(What:=a, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , MatchByte:=False, SearchFormat:=False).Activate End Sub 稚拙な文章で大変申し訳ないのですが、マクロに詳しい方、ご教授していただけませんでしょうか? よろしく御願い致します。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問を簡単に書けば、Sheet1の何処かのセルに「a],Sheet2の何処かのセルに「a]を入れた。両方の「a]を検索したい。でよいのでは無いか。こんなに質問文が簡単になる。2つのシートで判れば、増やしても少修正で済む場合が多い。ただし数十もシートが有るのかな。 ーーーー Sheet1とSheet2を作業グループにして、編集ー検索ー検索文字「a]で両シートを検索する。 これをマクロの記録をとって、」コードを見て、検索の都度変えるべき箇所などの対処を考えるべきとおもう。 Arrayを使うのでなく、数十のシートを作業グループ化するのなどの質問ならありえると思うが。 また検索の「オプション」で、全シート対象なら、検索場所に「ブック」がある。 ーーー マクロの記録活用を言いたい。それにはエクセルの操作(=エクセルで出来る事項)を十分知っている必要あり。

asuma8888
質問者

お礼

適切なアドバイスありがとうございます。 文章構成も含めて、勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

こんな感じではいかがでしょう? Sub TEST01() a = InputBox("検索したい文字を入力してください。") For Each ws In Worksheets Set t = ws.Cells.Find(What:=a, LookAt:=xlPart) If Not t Is Nothing Then ws.Activate t.Select Exit For End If Next If t Is Nothing Then MsgBox "見当たらないみたい。", vbCritical, "Σ( ̄ロ ̄lll)" End If End Sub

asuma8888
質問者

お礼

この通りやってみた所、希望通りにできました。 大変感謝しています。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マクロ 検索について

    こんにちは。マクロでの質問ですが、 【大学名リスト】というシートで作成したリストから検索してきたものを【検索ボタン】というシートのセルにコピペするマクロをボタンに登録しました。何度押しても検索してくれてしまうのですが、このボタンに登録したのは1回だけ実行して、もう一つのマクロで次を検索してくれるように作りたいのですが… Sub Macro1() ' ' Macro1 Macro ' ' Sheets("A.【大学名リスト】").Select Cells.Find(What:=Sheets("B.【検索ボタン】").Range("C8"), After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate Selection.Copy Sheets("B.【検索ボタン】").Select Range("E8").Select ActiveSheet.Paste End Sub 数値の検索だと1回だけで止まってくれるのですが、数式にすると何回も可能になってしまうのはなぜなのでしょうか。 あと、実行すると【大学名リスト】のシートで作成したリストから、【検索ボタン】のシートのあるセルにキーワードを入力すると、隣のセルに5つの候補を表示させるマクロも教えていただきたいです。

  • 文字検索マクロで質問です。

    文字検索マクロで質問です。 下記のマクロを作成したのですが、A1に検索する文字を入力してA列(A5:11700)のみを検索して該当が有ったらそのセルを色を付けし、又,該当が無ければMSG BOXで”該当なし”と表示するマクロを御教授頂けますか。 Cells.Find(What:=Range("A1").Value, After:=ActiveCell, LookIn:=xlFormulas,   LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , MatchByte:=False, SearchFormat:=False).Activate End Sub 以上、宜しくお願い致します。

  • EXCEL マクロでの検索をお教えください

     下記のようなマクロを使いたいのですがこの場合×があるときは良いのですが、  無いときエラーが出ます。どの様にすれば良いのかお教えください。  無いときエラーは オブジェクト変数または With ブロック変数が設定されていません。  となります。 Sub 検索()    Range("K12:K70").Select    Cells.Find(What:="×", After:=ActiveCell, LookIn:= _    xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _    xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate End Sub

  • エクセル2007のマクロ不具合について、

    次のようなマクロを「CTRL+T」のショートカットキーで作成しましたが、2回続けて実行すると2回目が違う結果となってしまいます。 1回目はちゃんと 2010/1/2 のセルがアクティブセルとなるのですが、2回目は 2010/11/2 がアクティブセルとなってしまいます。  原因と対処法があればぜひ教えていただきたいと思います。よろしくお願いします。 Sub 本日() Cells.Find(What:=Date, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate End Sub

  • エクセル マクロ 日付の検索

    エクセル2000にて検索のマクロを作っています。 オブジェクト変数またはwithブロック変数が設定されていません。とエラーがでます。 どなたか助けていただけませんか? ”メニュー”シートのAボタンを押すと”スケジュール”というシートの今日の日付のセルにカーソルが飛ぶようにしたいと思っています。 ”スケジュール”シートのR2セルに=today() 関数が入っています。 A列に日付が入っています。 Sub Macro3() Dim r2 As String   Application.ScreenUpdating = False  Sheets("スケジュール").Select  r2 = Range("R2").Value   Selection.Find(What:=r2, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False).Activate End Sub

  • VBAエラー:オブジェクト変数またはWithブロック変数が設定されていません。

    Book1.xlsのSheet1~Sheet8を選択し、それらのシート内から、ABCDEFGという文字検索をさせたいのですが、実行させると「実行時エラー'91':オブジェクト変数またはWithブロック変数が設定されていません。」というエラーとなってしまいます。 マクロの記録で作成したマクロを元にしているので、コードがおかしいとは思えないのですが・・・ どなたか、解決策を、ご教授下さいませ。 よろしくお願い致します。 ------------------ Sub TEST() Workbooks("Book1.xls").Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5", "Sheet6", "Sheet7", "Sheet8")).Select Cells.Find _ (What:="ABCDEFG", _ After:=ActiveCell, _ LookIn:=xlFormulas, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False, _ MatchByte:=False, _ SearchFormat:=False).Activate End Sub

  • エクセルのマクロについていくつか質問があります

    エクセルのマクロについていくつか質問があります 1 例えばA1セルが赤く塗りつぶされている場合隣のB1セルに赤と表示させたいのですが出来ますか 実際には色は何色かあります 2 セルの検索で検索であったセルを選択状態にするにはどうすればいいですか いちおう検索構文まではできてます Selection.Find(What:="6", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False, SearchFormat:=False).Activate 以上ですよろしくお願いします

  • VBA★findを使って見つけたセルの値を取得

    AA="タナカ" Selection.Find(What:=AA, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate 自動マクロでコレをつくりました。 タナカを見つけてその隣の変数を取得するというものを作りたいと思っています。 関数で言うとVlookupでやるものをマクロ化しようとしています。 検索して見つかったセルの右隣のセルの値を取得するにはどうしたらいいですか?

  • 検索した後の見つかった件数を取得したい

    画像のように手作業で検索した場合、下に検索結果の個数が表示されますが これをVBA内で取得することは可能でしょうか? マクロの記録だと Sub Macro() Cells.Find(What:="a", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , MatchByte:=False, SearchFormat:=False).Activate End Sub となるのですが、最後に全部の個数を取得したいです。

  • [VBA]変数を利用して時間を検索する方法が・・・

    エクセルで表示形式が「hh:mm:ss」に設定されているセルの中から 指定のセルを検索するマクロを作ろうとしているのですが、 上手くいきません。 検索する数字を変数にして変えられるようにしたいです。 Sub Macro1() Dim temp As Double temp = Range("A1").Value 'A1には0:00:01を入れる Cells.Find(What:=temp, After:=ActiveCell, LookIn:=xlValues, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate End Sub 上の記述だと、実行時エラー91「オブジェクト変数またはWithブロック・・・」が出ます。 > temp = "0:00:01" これに書き替えると「型が違います。」になり、「""」をはずすとコンパイルエラーになります。 「What:="0:00:01"」というように、直接入れると上手くいきます。 どなたか、お力をお貸しください。 よろしくお願いします。

専門家に質問してみよう