

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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA のdebug(F8キー) が...
-
エクセルのマクロ機能で前のシ...
-
マクロ 実行ボタンを押さずに...
-
EXCELのセルへ、デジタル時計を...
-
ローマ字→カタカナへ変換(エク...
-
EXCEL2000 VBA マクロ実行中に...
-
Excelマクロからのデータアクセ...
-
開いているフォルダを全て閉じ...
-
複数ファイルにある特定のシー...
-
エクセル グラフの軸の最小値最...
-
UWSCの簡単なキーマクロなので...
-
Excelを開いた時に表示さ...
-
【エクセル】 キーを押すと、...
-
Wordの画面を左右にスクロール...
-
【Excel VBA】エラー番号400
-
エラーになってないのにVBA...
-
マクロボタンをある条件の時に...
-
ThisWorkbook.Pathを実行すると...
-
ある行の前に通し番号をつける...
-
マクロを実行するとエクセルが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
マクロ 実行ボタンを押さずに...
-
複数ファイルにある特定のシー...
-
EXCELのセルへ、デジタル時計を...
-
Excel VBA のdebug(F8キー) が...
-
エラーになってないのにVBA...
-
エクセル グラフの軸の最小値最...
-
Excelを開いた時に表示さ...
-
エクセルのマクロ機能で前のシ...
-
EXCEL 複数のシートの同一の位...
-
ワードからエクセルへ貼り付け...
-
マクロを実行した日付をセルに...
-
Wordの画面を左右にスクロール...
-
VBAでEXCELに埋め込んだPDFを開...
-
TeraTermのマクロについて
-
【Excel VBA】エラー番号400
-
エクセルで複数のシートをまと...
-
エクセルでマクロ実行中に任意...
-
モジュール内のマクロを全て実...
-
マクロボタンをある条件の時に...
おすすめ情報