• 締切済み

VBAで作るexcel検索窓

Microsoft Excel 2007を使用しています。 シート1のデータを、 シート2内に設置した検索窓を使用して、 該当結果をシート2のセルに表示する ようなVBAを組みたいのですが、どのようにすればよいでしょうか。 VBA内のリストボックスではなく、直接データとしてセルに書きだしたいのですが・・・ やり方が分かりません。 他シートの検索方法と合わせてご教授ください。 よろしくお願いいたします。 (スクリプト全体を組んでいただけると非常に助かります。お願いいたします。)

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

●シート1のどこのセル範囲から検索したいのか ●検索条件は完全一致でいいのか部分一致にしたいのか ●検索にヒットした「一体何を」取ってきたいのか ●見つけた結果をシート2のどこに記入したいのか ●「検索窓」とはいったい何を使いたいのか・べつに何でもいいのか  etc,etc といった、「具体的にやりたいこと」がご相談で説明されていません。 こういった「具体的に何をしたい(させたい)のか」をイチイチ決めて、その通りに動作するようにマクロを考えるという事だというのをまず理解してください。 説明不足は全部てきとーに補っておきますので、参考にしてご自分でやりたい内容のマクロを改めて自作してください。 sub macro1()  dim s as string  dim res as range ’「検索窓」  s = inputbox("WHAT")  if s = "" then exit sub ’シート1を検索  set res = worksheets("Sheet1").cells.find(what:=s, lookin:=xlvalues, lookat:=xlpart) ’オマケ  if res is nothing then   msgbox("NOT FOUND")   exit sub  end if ’結果をシート2のセルに表示する  worksheets("Sheet2").range("A1") = res.value end sub

関連するQ&A

  • Excel97で「ブック内のキーワード検索」がしたい(VBA?)

    Excelの表を、月別にシート分けしています(計12枚) 自宅→Excel2002、会社→Excel97を使っているのですが、 複数のシートにわたってキーワード検索したいと思い、自宅のExcel2002で[編集]-[検索]-「ブック」を指定して検索しました。 ところが会社に行って同じ操作をしてみると、Excel97のためシート内検索しか出来ません。 Shiftキーで複数のシートを選択してから検索をしてみましたが、思うような結果になりませんでした。 (Excel2000だと複数シート選択-検索が出来るようなのですが・・) 会社のExcel97で、Excel2002のような「ブック内検索」がしたいのです。 VBAのユーザーフォームで作成するしかないのでしょうか? もしそうであれば、どのように作成していけばよいのか、わかる方ご教授ください<(_ _)> 【希望】 ・テキストボックスにキーワード(氏名・数字など)を入力→検索ボタンを押す→該当のセルがアクティブになる(該当セルが複数あれば、検索ボタンを押すたびにアクティブになる、など) ・「該当のデータはSheet1のC5とSheet3のC10にありますよ」みたいな感じで、データの位置が表示される、など よろしくお願いいたします。

  • エクセル VBA 複数シート検索

    超初心者です。 エクセルは2000を使用しております。 VBAを使って、複数シート(各フロア)にある座席表から、複数の人名(重複なし)を検索後、該当セルの背景に色を塗って印刷したいのですが、WEBで検索しても思うようにマクロを組めません。お助け願います。 質問が上手く出来ていないかもしれませんが、流れとしては 下記の感じです。 1.あらかじめ決められたシートに検索する人名のリストが存在 2.決められた複数のシートから検索 3.リストを上から順に人名がなくなるまで検索をループ 3.該当のセルの背景を塗りつぶす 4.印刷 簡単に言えば、誰がどのフロアのどこにいるかすばやく検索したいです。 っという感じでしょうか。

  • Excel VBA 条件検索について

    ExcelVBAで 「データ検索後リスト表示をして、そのリストから該当するシートを選べば表示される」 というユーザーフォームを作成したいのですが、やり方がよく解りません。どなたか教えて下さい。 具体的には 「コマンドボタンが押された時に、ユーザーフォーム内のテキストボックスに入力された値(名称、日付等)と、複数のシート内のセルの値(名称、日付等)を比較して、一致(全一致、一部一致)した場合、ユーザーフォーム内のリストボックスに表示させる」 というものと 「リストボックスに表示されたものの中から見たいシートを選択すると、そのシートを表示する」 というものです。 リストの表示形式は シート名   名称  日付等 Sheet1    りんご  2013.01.01 Sheet2    りんご  2013.01.02 という具合にしたいと思っています。 ちなみに複数のシートと言いましたが、マスターシートを作りコピーして使用しますので、同一形式のものになります。 以上になります。 色々やってみましたが、うまくいきませんので、どなたか解る方は教えて下さい。 よろしくお願いします。

  • Excel VBA コンボボックスの使い方

     VBAでのコンボボックスの使い方をしらべているのですが、うまく見つかりません。コンボボックスのリストに登録するのはどうしたらよいのでしょうか?シート上のセル内のデータを使用しないとリストの登録は出来ないのでしょうか?VBA上で作成して、ユーザーフォームで選択できるようにしたいと思っています。VBAをはじめたばかりなので初歩的な質問で大変恐縮です。どなたかわかる方がいらっしゃったらお願い致します。

  • エクセル2007VBAで検索するコードを知りたい。

    エクセル2007(Excel2007)のVBAで【検索と置換】と同等の機能をもった検索アプリケーションを作りたいのですが、 そのコード(コマンドボタンを実行したときのコード)を教えていただけないでしょうか。 (おそらくですが、リストボックスのコードも必要だと思います。) 正しくは、【検索と置換】から【置換】機能を無くしたものとイメージしていただきたいです。 ●設置するもの ユーザーフォーム(UserForm1) テキストボックス(TextBox1) コマンドボタン(CommandButton1) リストボックス(ListBox1) ●仕様 ユーザーフォームのテキストボックスに入力してコマンドボタンを押すと、検索対象を見つけ、 リストボックスにその対象一覧を行ごとに表示するものになります。 ●検索するときの条件 (1)大文字と小文字を区別しない (2)半角と全角を区別しない (3)部分一致すれば(一部でも一致すれば)検索対象にする (4)今、開いているワークシート上の「全てのセルが検索対象(列や行を指定しない)」 ※検索されたセルの存在する行ごとに、ユーザーフォームのリストボックスに(1行ずつ)表示したいです。 そして、リストボックスに表示されたデータのうち、どれか1つを選ぶと、その選択対象の行の【D列】にアクティブセルを移動するようにしたいです(画面もアクティブセルが見える位置にスクロールします)。 ●リストボックスに(1行ごとに)表示するもの● ↓↓↓ (左から)I列の値、D列の値、O列の値、Q列の値(→4列の値になります) ※リストボックスにQ列の値が表示された場合のみ(Q列に何かしらのデータがある場合のみ)、 リストボックス上の【その行の(I列の値、D列の値、O列の値、Q列の値の)文字すべてを赤色】にして表示していただきたいです。 分かる方がいましたらよろしくお願いいたします。

  • エクセルVBAでの検索

    みなさんこんにちは。私は今仕事で使っているエクセルのデータをVBAを使って簡単にしたい!!と日々パソコンに向かっています。けれどなかなか進まず… 助けてください。 ユーザーフォームのテキストボックスに入力した特定の文字列を、データが載っているシートから検索し、その文字列が入力されているセルの左右のセルのデータをシートの特定の場所に表示させたいのですが。 どなたかお分かりになりますか? 私がやりたいことが上手く説明出来ているのか… スゴク不安なのですが…。説明が下手で申し訳ありません。  皆さんからの回答をお待ちしております。

  • エクセルでのデータのあいまい検索のVBAについて

    VBAかマクロで作成したいと思いますが、あいまい検索ができずに困っております。 どなたかご教授お願いできますでしょうか? 一応画像を添付しておりますが大変見にくく申し訳ないです。  一つのファイルで2枚のワークシートを使用してデータのあいまい検索をしたいと思っております。 画像1の方のワークシートがSheet2になっていてこちらの”I”の列に入力しているデータが画像2になりますが登録商品リストの”G”の列に含まれているかを検索したいと思います。 その結果は”Sheet2”の緑色の部分”I”のセルにデータがあれば”*”をJのセルに表示したいと思います。 登録商品リストには長いもので桁数が30桁近いものもありますがこの桁数を8ケタくらいまでの一致でSheet2のIの列のデータと照合して結果をJに表示できればと思っております。何卒ご教授くださいますようお願いいたします。 照合するデータにつきましては、その日によって件数が違いますので、Sheet2のI列にあるデータが200件くらいの時もあれば2000件くらいの時もございます。 登録商品リストは登録するたびに量が増えていくので照合件数も増えていくことになりますので、どちらも1行指定でできればべすとだとおもっております。

  • エクセルのVBAマクロで検索と結果表示(抽出)

    エクセルのVBAマクロで検索と結果表示(抽出)を行いたいです。 業務で使用している膨大なリストデータから、特定のキーワードで情報の絞り込みを行いたいのですが、上手くマクロが組めません。 機能としては、シート1で特定のキーワード(テキストボックスに)を入力し検索ボタンを押下すると、 シート2のリストデータから検索に引っかかったセルの"行"を、シート1にリストアップ(貼り付け)していくようなマクロを作りたいのです。 シート2にはB列~AH列xn行のリストデータがあり、シート2のK列のセル内から「シート1のテキストボックスで入力したキーワードを含む」検索を行い、 HITした行をシート1のA9の行から結果として表示を行いたいんです。 簡単に言えばオートフィルタ機能の部分一致版を作りたいのですが・・・。 (オートフィルタでは完全一致でしか抽出が出来ないので) そして、検索ボタンを押下すると前回結果はクリアしたいです。 ネット上のサンプル等も参考にしながらやってみたのですが上手く行きません。。。 どなたか上記のマクロ文をご教授願えないでしょうか。 必要な情報(シート2の特定の列)のみ表示させたいとも思いましたが、むずかしくて断念・・・。 もし可能でしたらこちらもお願い致します。 よろしくお願いいたします。

  • VBAの作り方

    Excel VBAについて、質問です。 Sheet1にあるデータにSheet2のデータを計算させたいのですが、Sheet2にあるデータは、Sheet1のデータの1部です。これを、Sheet1の該当するセルの部分に計算させていきたいのですが、該当するセルに結果がついてきません。 これは、VBAで組み込むことは不可能でしょうか。

  • excelでVBAでユーザーフォームのリストBOX

    下記VBAの作成の仕方を教えていただけないでしょうか。 やりたいこと (1)sheet2のA1セル~A5セルまでの間の間をユーザーフォームのリストボックスに登録する (2)sheet1のA1セルをクリックすると、ユーザーフォームが起動し、任意のリストをクリックすると、 その値がA1セルに格納され。ユーザーフォームが終了する。 ※コマンドボタンは使わずにお願いします。なおexcel2000です。

専門家に質問してみよう