- ベストアンサー
Excelのテキストボックスでうまく動作しない
- Excelのテキストボックスで数字を入力しても、フォーカスが移動しない問題が発生しています。
- また、2桁の数字を入力する際にもフォーカスが移動してしまうという問題もあります。
- 現在の設定が正しく動作しないため、最適な方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 1. のおっしゃっていることは、どういう意味なのかよくわかりませんが、 以下のような、Enterキーなどのコードをイベントにして起動するとよいと思います。 また、WorksheetFunctionを使うと、ここではありえないことですが、それでも、エラーがあると、エラートラップを付けない限りは、エラーを解除できませんので、できる限り、VBAの関数を使うようにしてください。 後、Findメソッドは、これに関わらず、なるべく複数のオプションは入れておく習慣をつけておいたほうが無難です。 Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _ ByVal Shift As Integer) Dim dx As String, c As Range If KeyCode <> 13 Then Exit Sub 'Enter =13 dx = StrConv(TextBox1.Value, vbNarrow) With ActiveSheet.Range("A:A") Set c = .Find(dx, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then c.Activate Else MsgBox "該当なし" End If End With TextBox1.Value = "" End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >If KeyCode <> 13 Then Exit Sub キーボードから発生するコードを、制御コード」と呼ぶとは思いますが、 Enter キーは、コード 13 Tab キーは、コード 9 Back Space キーは、コード 8 など、キーの入力によって制御コードが、発生します。 それらの中のひとつです。 もし、ご自分で調べる場合は、 ● If KeyCode <> 13 Then Exit Sub VB Editor 画面の左端をクリックして、ブレークポイント(●)を置きます。 そうして、TextBox に、Enter を入れると、VB Editor 画面が現れます。 そこで、 Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) ここの KeyCode のところにマウスポインタを置くと、 「KeyCode = 13 」 というポップアップが現れるはずです。 試してみてください。
お礼
重ね重ね、恐れ入ります。 大変勉強になりました。 また、何かの折にはよろしくお願いいたします。
- Wendy02
- ベストアンサー率57% (3570/6232)
#1 の Wendy02 です。 追伸: >1、lostfocusに設定すると、 やっと意味がわかりました。それは、コントロールツールのTextBox なのですね。TextBox は、都合、3つありますから、それが何を指すのか分からないことがあります。 私は、Userform の TextBox だと思ってしまいました。 ただ、#1 の回答で間違いがないかとは思います。
お礼
ありがとうございます。 間違いありませんでした。
お礼
早々にご回答いただきまして、恐縮です。 思い通りに動作いたしました。 誠にありがとうございます。 ・KeyDownの動作 ・StrConv関数 ・Findで「LookAt:=xlWhole」を使う ・Dim dxだけでなく、「 As String」「 c As Range」と宣言するなど、 素人にとっては、非常に有り難い、密度の濃い内容でした。 細やかなお心遣い、感謝いたします。 「If KeyCode <> 13 Then Exit Sub」の意味だけが、 ちょっと調べてみたのですが、?でした。