

Excelのワークシート上に検索窓とボタンを作ろうとしています。
コントロールツールボックスからテキストボックスとコマンドボタンを1つずつ配置しました。ボタンを押すと検索用マクロが動作してテキストボックスに入力した文字を別のシート上から検索する仕組みです。計画どおりの動作をするようになったのですが、使い勝手についていくつか不満があるので解消したいのです。
1.検索窓のあるシートを開いたとき、カーソルがテキストボックス内にある状態にしたい。
2.カーソルがテキストボックス内にある状態でEnterキーを押すと、検索用マクロが動作するようにしたい。
3.カーソルがテキストボックス内にある状態でTabキーを押すと、コマンドボタンにフォーカスが移るようにしたい。
自分でも色々調べてみたのですが、どうにも分かりません。よろしくお願いします。
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
ありがとうございます!
分かりやすく説明していただいて、すぐに実現できました。
おかげさまで検索窓がとても使いやすくなり、大満足です。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセル ブックを開いたときに検索ウインドを表示させたい
Excel(エクセル)
-
エクセルでの検索ボックスの作り方について
Excel(エクセル)
-
Excel2016 検索の窓を常時表示させたいのですが、教えてください。
Excel(エクセル)
-
-
4
【エクセル】フリーワード検索用の検索窓を作りたいです。その検索結果を一覧で表示させたいです。
Excel(エクセル)
-
5
エクセルの検索窓で毎回検索場所のブックを選択するのが面倒
Excel(エクセル)
-
6
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
7
VBA 検索して一致したセルへジャンプさせたい
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
マクロ 実行ボタンを押さずに...
-
Excelマクロでオプションボタン...
-
エクセルのマクロ機能で前のシ...
-
Excelを開いた時に表示さ...
-
EXCEL 複数のシートの同一の位...
-
複数ファイルにある特定のシー...
-
エクセルで複数のシートをまと...
-
ワードからエクセルへ貼り付け...
-
エクセル グラフの軸の最小値最...
-
EXCELのセルへ、デジタル時計を...
-
ワードマクロで画像を選択する方法
-
Wordの画面を左右にスクロール...
-
Excel VBA のdebug(F8キー) が...
-
Wordで「原稿用紙○枚」を換算す...
-
マクロボタンを作ってのマクロ...
-
Excelのワークシート上に検索窓...
-
VBAでEXCELに埋め込んだPDFを開...
-
モジュール内のマクロを全て実...
-
TeraTermのマクロについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
マクロ 実行ボタンを押さずに...
-
EXCELのセルへ、デジタル時計を...
-
複数ファイルにある特定のシー...
-
エクセル グラフの軸の最小値最...
-
Excel VBA のdebug(F8キー) が...
-
エラーになってないのにVBA...
-
Wordの画面を左右にスクロール...
-
EXCEL 複数のシートの同一の位...
-
エクセルのマクロ機能で前のシ...
-
Excelを開いた時に表示さ...
-
エクセルで複数のシートをまと...
-
エクセルでマクロ実行中に任意...
-
ワードからエクセルへ貼り付け...
-
VBAでEXCELに埋め込んだPDFを開...
-
Wordで「原稿用紙○枚」を換算す...
-
Excelマクロでオプションボタン...
-
マクロを実行した日付をセルに...
-
TeraTermのマクロについて
-
Accessのクエリを実行するショ...
おすすめ情報