エクセルVBAでの文字検索方法

このQ&Aのポイント
  • エクセルのVBAを使用して、文字の検索を行いたい場合の方法について説明します。
  • マクロの記録機能を利用することで、特定の文字を検索するマクロを作成できます。
  • ただし、現在のマクロでは同一のシートしか検索できないため、他のシートを検索する方法を探しています。
回答を見る
  • ベストアンサー

エクセルVBAで検索

エクセルのVBAで文字の検索をしたいと思います エクセルは2000です エクセルのマクロの記録機能を利用して 下記のようなマクロを作成しましたが これでは、別のシートの文字が検索できません 同一ブックの別のシートも検索できるようにするには どうしたら良いでしょうか、よろしくお願いします 以下同一シートしか検索しない例 Sub Macro1() Dim 検索文字 As String 検索文字 = InputBox("検索文字を入力してください") Cells.Find(What:=検索文字, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _ .Activate End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 最初に、#1 さんの回答で試してみてからにしてください。 ここら辺は、Version によって左右されるかもしれませんので、はっきり言明できません。手元の資料(VBA辞典)では、2002までですので、良く分りません。 3シートをグループでSelect(またはActivate)しても、記録マクロレベルでは、どう見ても、ActiveSheetでしか検索するようには思えないです。他にやり方があるのかもしれませんが、Findメソッドを使う限りは、同じようなコンセプトになるのではないかなって思いました。その上で、私の考えたコードです。(LookIn の部分だけ、値検索にしました。) Sub MacroSample1()   Dim 検索文字 As String, sh As Worksheet   Dim c As Range, myFadd As String   検索文字 = InputBox("検索文字を入力してください")   For Each sh In Worksheets(Array("Sheet1", "Sheet2", "Sheet3"))    sh.Select    myFadd = "$A$1"    Set c = Cells.Find(What:=検索文字, _           After:=Range(myFadd), _           LookIn:=xlValues, _           LookAt:=xlPart, _           SearchOrder:=xlByRows, _           SearchDirection:=xlNext, _           MatchCase:=False)    If Not c Is Nothing Then      myFadd = c.Address      Do       c.Select       If MsgBox("継続しますか?", vbOKCancel) = vbCancel Then       Exit Sub       End If       Set c = Cells.FindNext(c)      Loop Until c Is Nothing Or c.Address = myFadd    End If   myFadd = ""   Next End Sub

innsuubunnkai
質問者

補足

Wendy02さんありがとうございました。 回答のコードを実行したところ 動作を確認できました、 利用させていただきたいと思います(感謝) (補足) 私の環境は自宅がエクセル2000で 職場がもっと新しいバージョンです(2002かも) エクセル2000では手動で検索してもシートしか 検索できませんが、職場のバージョンだと手動での 検索時に検索対象をブックにすると他のシートも検索 できますので、Findのパラメータを指定することにより ブック検索が出来るのかなと思っていたのですが そうではないのでしょうか? (そうでないから、コードを書いてくれたのですね)

その他の回答 (1)

  • g_nekoru
  • ベストアンサー率34% (30/88)
回答No.1

Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select として複数シートを選択した状態で検索を書ければ検索できます。

innsuubunnkai
質問者

補足

g_nekoruさんありがとうございます 回答を参考にして Sub Macro1() Dim 検索文字 As String Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select 検索文字 = InputBox("検索文字を入力してください") Cells.Find(What:=検索文字, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _ .Activate End Sub のようにやってみたのですが、私の持っているエクセルではうまくいきませんでした、 「実行時エラー91 オブジェクト変数または、Withブロック変数が設定されていません」とでてしまいます 明日職場のエクセル(バージョンが新しい)でもためしてみます

関連するQ&A

  • EXCEL VBAでの 文字列検索

    セル内の文字列を部分一致で検索したいのですが、 下記の構文だと、検索対象シートを選択しなくてはならないため、 PGの動きが堅くなってしまいます。何かいい方法をご存知の方、 教えてください。 Selection.Find(What:=key, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False).Activate Cells.FindNext(After:=ActiveCell).Activate

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

    画像のように手作業で検索した場合、下に検索結果の個数が表示されますが これを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 となるのですが、最後に全部の個数を取得したいです。

  • 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

  • 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でやるものをマクロ化しようとしています。 検索して見つかったセルの右隣のセルの値を取得するにはどうしたらいいですか?

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

    文字検索マクロで質問です。 下記のマクロを作成したのですが、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 以上、宜しくお願い致します。

  • エクセル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

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

    エクセルのマクロについていくつか質問があります 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エラー:オブジェクト変数または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

  • マクロエラ-

    初心者です。win2000,エクセルでマクロが途中で止まってしまいます。時々に、最後までいくことがありますが、8割がたは、同じところでストップします。 マクロ言語は理解できていません。 うまく完了のケ-スは、デ-タの中身次第かなと思います。 記憶では、”0”があれば、何かをするようにしたと思います。 想定外のデ-タで、とまるのなら、回避方法を教えてください。 黄色反転して、ストップする部分は、以下です。 mcr3 Range("A1").Select ActiveCell.SpecialCells(xlLastCell).Select Columns("C:C").Select Selection.Find(What:="0", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False).Activate いつもここで止まります。 ActiveCell.Replace What:="0", Replacement:="", LookAt:=xlWhole, _ SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False Selection.Find(What:="0", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False).Activate -----------→つずく。

専門家に質問してみよう