• ベストアンサー

excelで検索ボタン

excelで検索用のボタンを作りたいのですがよくわからいのでご教授願えないでしょうか? 内容は 検索ボタンをクリックしたら検索場所がsheet、検索対象が値に設定された状態でCtrl+Fの検索ボックスを開きたいと思っています。 若しくは上記の条件で検索できる検索窓とボタンがあればそちらでも構いません。 苦手分野なのでなかなかうまくいかず質問させていただきました。宜しくお願いします。

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

  • ベストアンサー
回答No.5

こんにちは。お邪魔します。 > 検索ボタンをクリックしたら検索場所がsheet、検索対象が値に設定された状態でCtrl+Fの検索ボックスを開きたいと思っています。  【検索場所がsheet】  【検索対象が値】  【Ctrl+Fの検索ボックス】 実現するのは簡単そうに見えて、意外と解り難いですよね。 マクロの記録で得られるレベルのものではないですから安心してください。 > 若しくは上記の条件で検索できる検索窓とボタンがあればそちらでも構いません。 その方がいい場合もある、とは思うのですが、 これはこれで、仕様をより明確に確定しなければなりませんから、 どんな仕様にするのか、をご自身で決めるまでに、 色々手を動かして試す必要があるような、、、。 なので今回は【Ctrl+F】で表示される[検索と置換]ダイアログでお応えします。 【検索対象が値】という点については二通りの解釈を持っています。  a [検索と置換]ダイアログのオプションとしての[検索場所(シート|ブック)]     に、シート、を指定する  b a の状況に加えて     検索範囲をシート全体にする(拡げる)(複数セル範囲選択中の範囲に限定しない) a を意図したものかも知れませんが、とりあえず、b という解釈で書いています。 その必要がないようでしたらば、★でマークした行を削除してください。 【検索場所がsheet】【検索対象が値】 以外の検索オプション(※【詳細】は下記)については、 (直近の検索・置換の際に指定変更があってもなくても) Excel起動時の初期設定になる(強制される)ように書いています。 他のオプションを別途指定変更したい場合は、 VBE画面に記入したコードの  Find の部分にカーソル(キャレット)を当て F1キーでVBAヘルプを表示して、 [Findメソッド]の各名前付き引数に[指定できる定数]の中から、 お望みのオプションを選んで指定を書き換えてください。 お求めに十分でなかった場合は遠慮なく、補足欄にでも書いてみて下さい。 ' ' /// Private Sub CommandButton1_Click() ' ' [書式の検索]を(設定中であってもなくても)クリア Application.FindFormat.Clear ' ' [検索場所]:シート ' ' [検索対象]:値 ' ' これ以外のオプション(※【詳細】は下記)をすべてデフォルトに設定して ' ' バックグラウンド(VBAのメソッド)で、空(ダミー)の検索を実行 ActiveCell.Find _ What:=ActiveCell, _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchCase:=False, _ MatchByte:=False, _ SearchFormat:=False ' ' 複数セル範囲を選択中の場合は、 ' ' 検索範囲を(限定せずに)シート全体にする為に アクティブセルを選択 If ActiveCell.MergeArea.Address <> Selection.Address Then ActiveCell.Select ' ★ ' ' 以上の処理による設定 を 反映した形で、、、 ' ' [検索と置換]ダイアログを表示 Application.CommandBars.FindControl(ID:=1849).Execute End Sub ' ' // ' ※【詳細】 ' ■ Find メソッドをダミー実行することで ' → [検索場所(シート|ブック)] =(お望みの設定)シート ' を指定(強制)したことになります。 ' ▼ 以下、名前付き引数 と [検索と置換]ダイアログ上のオプション との 対照 =指定値 ' What    : [検索する文字列] =(仮の表示として)アクティブセルの値 ' SearchOrder : [検索方向(行|列)] =(起動時の初期値)行 ' LookIn   : [検索対象(数式|値|コメント)] =(お望みの設定)値 ' MatchCase  : [大文字と小文字を区別する(T|F)] =(起動時の初期値)False ' LookAt   : [セル内容が完全に同一であるものを検索する(T|F)] =(起動時の初期値)False ' MatchByte  : [半角と全角を区別する(T|F)] =(起動時の初期値)False ' ◆ ボタンの種類と運用方法 ' ▼ 挿入した[図形]などのシェープや[ボタン(フォームコントロール)] の場合 '  上記プロシージャ記入先は標準モジュール '  上記プロシージャ宣言(先頭)行の Private を削除 '  [図形]などのシェープや[ボタン] の[マクロの登録]にて '    上記プロシージャの名前を登録 ' ▼ [コマンドボタン(ActiveXコントロール)] の場合 '  上記プロシージャ記入先はコ[コマンドボタン]を配置したシートのシートモジュール '  上記プロシージャはそのまま記入 '  [コマンドボタン]のオブジェクト名がCommandButton1以外の場合は '    上記プロシージャ宣言(先頭)行の CommandButton1 を書き換え ' ' ///

hironori07
質問者

お礼

お返事遅れて申し訳ございません。 希望通りの動作ができました。改めて自分の未熟さを実感するばかりです。 今回は本当にありがとうございました。

その他の回答 (4)

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

検索窓をだすだけなら 標準モジュールに Sub kensaku() Sub kensaku() 'Application.Dialogs(xlDialogFormulaFind).Show Application.Dialogs(xlDialogFormulaFind).Show Arg1:="ぎもん検索語句", Arg2:=2, Arg3:=2 'Arg2 1=数式 2=値 3=コメント 'Arg3  1=行 2=列 End Sub を実行すればよい。 しかし質問に、(利用者は)どういうタイミングでこの検索窓を出すべきか、を書いてないから、完全な答えができない。 シートに図形の四角を1つ張り付けて、右クリックして出てくる、マクロの登録で上記の標準モジュールにある「kensaku」を指定する。 シートの四角をクリックすれば、検索窓が出てくる。 しかし検索結果をどうするか(複数セルに見つかる場合が在るが)は、何も質問に書いてない。VBAでも定番のコードがあるので、解説書には載っているが、初心者にはむつかしい箇所と思う。 むしろ検索操作をやってマクロの記録を取り、そのコードを勉強する方が、課題には役立つだろう。 ーー ウィンドウズのGUIにあこがれて、やりたいと思っただけで、力不足ではないかな。 普通の検索操作を使えばよいはず。 現状の力で、他人に使ってもらう仕組みを作るのは無理だろう。

hironori07
質問者

お礼

おっしゃる通りで自分の未熟さを改めて実感しています。 当方の勤務する会社は小規模でエクセル等扱える中では自分が一番というレベルで、上司等に操作設定をなかなか理解してもらえず仕方なく今回のような質問をさせていただいた次第です。 今後は自分のスキル向上に力を入れていきたいと思っておりますので機会がありましたらご助言いただけると助かります。 今回はありがとうございました。

  • f272
  • ベストアンサー率46% (8012/17124)
回答No.3

Sub my_find_replace() Const find_replace = 1849 Application.FindFormat.Clear Cells.Find What:=ActiveCell.Value Application.CommandBars.FindControl(ID:=find_replace).Execute End Sub こんな感じです。

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.2

ボタンのマクロに以下のコードを登録して 検索文字列をB1に検索するシートをA1に入力してボタンをクリックしたください。 Sub Example() ActiveCell.Find What:=Range("B1").Value Sheets(Range("A1").Value).Activate Application.CommandBars.FindControl(ID:=1849).Execute End Sub

  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.1

まずマクロを作成します。 そしてボタンを配置したら、そのボタンでマクロが動くように登録します。 マクロのつくり方がわからない場合は、 キーボードマクロで 一連の動作を記録して 記録したコードを読んでみてください。

hironori07
質問者

補足

色々調べて何度か試しているのですが記録されていないような感じです。 マクロは今まで使ったことがないのでやり方が間違っているのかもしれませんが(-_-;)

関連するQ&A

  • エクセル ブックを開いたときに検索ウインドを表示させたい

    初めまして。よくわからないまま使い続けている初心者です。 検索する業務が多く、その度[編集]-[検索](Ctrl+F)で検索窓を開いて対象となる数字列を入力し検索を行うのですが、この操作([編集]-[検索](Ctrl+F))をしないままブックを開いたと同時に検索窓を表示させ続けることはできるのでしょうか?あるいは、マクロでシート内に検索ボタン(押すと検索窓が開く)を作ることは可能でしょうか? よろしくご教授くださるようお願いいたします

  • Excelのワークシート上に検索窓とボタンを作りたい

    Excelのワークシート上に検索窓とボタンを作ろうとしています。 コントロールツールボックスからテキストボックスとコマンドボタンを1つずつ配置しました。ボタンを押すと検索用マクロが動作してテキストボックスに入力した文字を別のシート上から検索する仕組みです。計画どおりの動作をするようになったのですが、使い勝手についていくつか不満があるので解消したいのです。 1.検索窓のあるシートを開いたとき、カーソルがテキストボックス内にある状態にしたい。 2.カーソルがテキストボックス内にある状態でEnterキーを押すと、検索用マクロが動作するようにしたい。 3.カーソルがテキストボックス内にある状態でTabキーを押すと、コマンドボタンにフォーカスが移るようにしたい。 自分でも色々調べてみたのですが、どうにも分かりません。よろしくお願いします。

  • エクセル2013 検索→シートへの移動

    エクセルで文字検索したあと、マウスを使って検索窓から シートへ移動するんですが、この一連の操作を キーボードのほうで移動できないでしょうか? ちなみに 検索窓からシートへの移動 ⇒Alt+Shift+F6 シートから検索窓への移動 ⇒Ctrl+Alt+F6 もやってみましたが全く動きません よろしくお願いします

  • Excelのマクロで検索ボタンを作るには

    Excelでマクロを使ってボタン(検索ボタンみたいなのを作って)を押すと検索ウィンドウが開いて検索できるようにしたいのですがどうすればいいでしょうか? 現在ブックの中に会員登録sheetと当日参加者sheetという風に分けていて当日の参加者一覧は会員登録者の中から会員番号で登録していくという形を作っています。そこで当日参加者の会員番号を抽出する為に当日参加者のsheetを開いている状態で会員登録者sheetの中から名前を検索して会員番号を抽出したいと思っています マクロの登録でCTRL+Fで検索ウィンドウを開いて検索(このときの検索条件はブック全体にしています) すると検索が終わった時点で会員登録sheetに切り替わっているのでsheetを当日参加者に 切り替えてマクロの登録終了にしたのですがマクロの実行を行っても何も起きませんでした。 なにかよい方法はありますでしょうか?教えて下さいm(__)m

  • エクセル ctrl+F 検索ウィンドウ

    エクセルについて2つ、質問があります。分かる方、お願いします。 1つめですが、ctrl+Fのショートカットで呼び出すことが可能な検索窓は初期文字入力が英数半角といるかと思うのですが、これを呼び出した時からローマ字入力に設定しておきたいのですが、そのようなことが可能でしょうか。 2つ目ですが、エクセルで特定のシートAに切り替えた時にctrl+Fのショートカットで呼び出すことが可能な検索窓を自動的に出したいのですが、そのようなことは可能でしょうか。

  • Excelの検索フォームの作成方法を教えてください

    添付画像のように、Excelに入力されている値があるとします。 これを別シートにフォームを作成し、下記のように検索・値をmsgboxで返す仕組みを作成したいです。 ●「検索開始」というボタンを作成し、ボタンをクリックすると、検索窓が表示される。 ●検索窓に名前を入力し、検索ボタンをクリックすると、元データのその名前の下に記載してある番号を  msgboxに表示する。 (例) 検索窓に「山田 太郎」と入力して検索をクリックすると、「123」とmsgboxに表示されるようにしたい。 こちらの方法を教えて頂けないでしょうか。 VBAで記述する必要がある場合、コードを教えてください(><)

  • エクセルシートへ検索ダイアログの貼り付け

    勝手な注文かもしれませんが、エクセル2007のシート上に「検索と置換」ダイアログを貼り付けることが出来るでしょうか。複数シートからデータを検索する際にCtrl+Fキーで検索すれば事足りるのですが、シート1に検索ダイアログボックスを作成したいと思い質問させて頂きました。宜しくお願いします。

  • エクセル VBA オプションの検索

    エクセルのオプション検索で、検索対象が値のみの、フォントサイズ20が条件で検索しております。 エクセルを立ち上げる度に条件設定しないといけないので、できればウィンドウ枠の固定で固定した行に、テキストボックスを追加して入力した文字が含まれる行にエンターを押す度に移動できればいいのですが、宜しければコードをご教授お願いします。

  • エクセル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列の値の)文字すべてを赤色】にして表示していただきたいです。 分かる方がいましたらよろしくお願いいたします。

  • エクセル ボタンをクリックして…

    エクセルの作業についての質問です。 ボタンを配置して そのボタンをクリックすると Ctrl+Alt+F9を押したことに することはできますか? PC初心者なので キーボード上の Ctrl,Alt,F9 を探すのに 時間をロスしてしまいます。 作業効率を上げたいので 教えて下さい。

専門家に質問してみよう