• ベストアンサー

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

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

noname#148473
noname#148473

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

  • ベストアンサー
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

こんにちは。 こういうのはユーザーフォームで作ったほうが簡単なんですが。 >1.検索窓のあるシートを開いたとき、カーソルがテキストボックス内にある状態にしたい。 これはシートのActivateイベントで、TextBox1.Activateするだけです。 >2.カーソルがテキストボックス内にある状態でEnterキーを押すと、検索用マクロが動作するようにしたい。 テキストボックスのKeyDownイベントで押されたキーを取得できる。 KeyDownイベントの引数KeyCodeには押されたキーコードが入りますからこれが13(=vbKeyReturn)だったら検索マクロを実行すれいいです。 >3.カーソルがテキストボックス内にある状態でTabキーを押すと、コマンドボタンにフォーカスが移るようにしたい。 同様にKeyDownイベントでTabが押されたことを取得して、コマンドボタンをアクティブにします。Tabキーのコードは9(=vbKeyTab) Private Sub CommandButton1_Click() 検索マクロ End Sub Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Then 検索マクロ End Sub Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Then 検索マクロ If KeyCode = vbKeyTab Then Me.CommandButton1.Activate End Sub Private Sub Worksheet_Activate() Me.TextBox1.Activate End Sub

noname#148473
質問者

お礼

ありがとうございます! 分かりやすく説明していただいて、すぐに実現できました。 おかげさまで検索窓がとても使いやすくなり、大満足です。 本当にありがとうございました。

関連するQ&A

  • テキストボックス(VBA)でEnterを押したときに作動するマクロ

    Excel2000を使用しています。 VBAで、ワークシート上にあるテキストボックス内にカーソルがある状態で、Enterキーが押されたときに作動するマクロを作りたいのですが、方法が分かりません(ヘルプや翔泳社のVBA辞典も見たのですが、どうもよく分かりません) ちょうど、gooやYahoo!の検索窓のような感じでマクロを動作させたいのですが、どのようにしたら良いでしょうか?ご存知の方、どうか宜しくお願いいたします。

  • VBAのフォーム カーソル移動

    VBAのフォームでテキストボックス(1)~テキストボックス(5) まで作ったとします。 カーソルの移動はtabindexの値を順番につければいいのですが、例えばENTERキーとTABキーを両方押したときは カーソルが一つ飛ぶ制御をしたいのですがどうすればいいでしょうか? つまり カーソルがテキストボックス(1)にいる状態でENTERキーとTABキーを同時に押せばカーソルがテキストボックス(3)に移動するようにしたいのですが、お願いします

  • エクセルで検索窓のようなものを作る

    エクセルのシートにテキストボックスとコマンドボタンを配置してシート上のデータを検索することは可能でしょうか?今現在はB列に、複数の文字データが入力してあるので、オートフィルタのオプションから「を含む」で検索してます。 イメージとしては、オートフィルタのオプションから「を含む」を選んでから検索しなくても予めシートに用意してあるテキストボックスに検索したい文字を入れてボタンを押すと、オートフィルタで検索したときと同じような結果が得られるようにしたいと思ってます。 例)    A    B    C     -------------- 1     血液型      2      A 3      B 4      O 5      AB 上のような表があったとして、テキストボックスにAと入力してボタンを押すとB2とB5が表示されるようにしたと思ってます。いい方法があればご教示願います。

  • エクセルのコマンドボタンを選択したい

    こんばんわ! エクセルのsheet1上にコマンドボタンを設置したのですが、 「TABキーで移動してコマンドボタンを選択し、エンターでボタンを押す」 ということをしたいのですが、可能でしょうか? 使っているのはoffice2003エクセルです。 わかる方おりましたらアドバイスの程よろしくお願いします。

  • タブ切替ボタンからのフォーカス移動について

    いつもお世話になっています。 VisualStudio2005,Vistaで開発しています。 タブコントロールのタブ切替ボタンにフォーカスが当たっている状態で左右キーを押すと、 隣のボタンにフォーカスが移ると共にアクティブなタブが変更されます。 その状態でTabキーを押すと、該当タブページの先頭オーダーを持つコントロールにフォーカスが移りますが、 これと同じ動作を下キー、Enterキーで実現したいと考えています。 テキストボックス等ではkeypressイベント、keydownイベントでフォーカス制御ができましたが、 どうもうまくいきません。 個々のタブページでは両イベントが発生せず、タブコントロール本体ではイベント自体は起きるものの、 コンボボックスの内容を変更するために押した下キーにすら反応してしまいます。 何か良い解決方法はありませんでしょうか。 皆様のお知恵をお貸しいただけましたら幸いです。

  • コマンドボタンについて、、、

    おはようございます。 度重なる相談で申し訳ありません、、、 コマンドボタンにフォーカスを合わし、Enterキーを押すとコマンドボタンの内容を実行できるまではできました。しかし、Enterキーを押しても、コマンドボタンは凹まない状態なんです。 Enterキーを押して凹ますには、どんな制御が必要なのでしょうか?是非、アドバイスを下さい。 よろしくお願いします。 ** 環境 ** VB6.0sp5 Win98 IE5.5

  • Excelユーザーフォームでのデータ検索

    初心者の質問で申し訳ございません。 ユーザーフォームを利用して検索ボタンを作ろうと考えています。 ユーザーフォームでテキストボックスを2個と コマンドボタン1個を作成し、 テキストボックス1に検索したい氏名を入力して コマンドボタンを押すと、 ワークシート(ワークシート名、データ)に作成されたデータのD列から 一致するものを検索し、 一致したデータのA列にある「番号」をテキストボックス2、 表示する。 というマクロが書けず困っています。 よろしくお願いします。

  • excelで検索ボタン

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

  • Excelユーザーフォームでのデータ検索

    現在Excelマクロの勉強中ですが、ユーザーフォームでテキストボックスを4個とコマンドボタン1個を作成し、テキストボックス1にコードを入力してコマンドボタンを押すと、ワークシート(ワークシート名、住所録)に作成されたデータのA列からコードを検索(データは2行目から始まる)し、一致したデータのB列にある「名前」をテキストボックス2、C列の「住所」をテキストボックス3、D列の「電話番号」をテキストボックス4に表示する。 というマクロが書けず困っています。 わかる方教えてください。

  • ボタンの強調表示について

    VB2005でテキストボックスとOKボタン、キャンセルボタンのあるフォームを作成しようとしています。現状ではテキストボックスにフォーカスがある時は、OKボタンが強調表示されないのですが、テキストボックスにフォーカスがある時でもOKボタンが強調表示され、テキストボックスに文字を入力した後Enterキーを押すとOKボタンが押されるようにはできないでしょうか? 初歩的な事かもしれませんが、いろいろ調べても判りませんでした。どなたか教えていただけると幸いです。よろしくお願い致します。

専門家に質問してみよう