• ベストアンサー

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

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

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

  • ベストアンサー
  • 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