プロが教える店舗&オフィスのセキュリティ対策術

Excelのワークシート上に検索窓とボタンを作ろうとしています。
コントロールツールボックスからテキストボックスとコマンドボタンを1つずつ配置しました。ボタンを押すと検索用マクロが動作してテキストボックスに入力した文字を別のシート上から検索する仕組みです。計画どおりの動作をするようになったのですが、使い勝手についていくつか不満があるので解消したいのです。

1.検索窓のあるシートを開いたとき、カーソルがテキストボックス内にある状態にしたい。

2.カーソルがテキストボックス内にある状態でEnterキーを押すと、検索用マクロが動作するようにしたい。

3.カーソルがテキストボックス内にある状態でTabキーを押すと、コマンドボタンにフォーカスが移るようにしたい。

自分でも色々調べてみたのですが、どうにも分かりません。よろしくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/07/05 09:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています