• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelのテキストボックスで、うまく動作しない)

Excelのテキストボックスでうまく動作しない

このQ&Aのポイント
  • Excelのテキストボックスで数字を入力しても、フォーカスが移動しない問題が発生しています。
  • また、2桁の数字を入力する際にもフォーカスが移動してしまうという問題もあります。
  • 現在の設定が正しく動作しないため、最適な方法を教えてください。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 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

hakobulu
質問者

お礼

早々にご回答いただきまして、恐縮です。 思い通りに動作いたしました。 誠にありがとうございます。 ・KeyDownの動作 ・StrConv関数 ・Findで「LookAt:=xlWhole」を使う ・Dim dxだけでなく、「 As String」「 c As Range」と宣言するなど、 素人にとっては、非常に有り難い、密度の濃い内容でした。 細やかなお心遣い、感謝いたします。 「If KeyCode <> 13 Then Exit Sub」の意味だけが、 ちょっと調べてみたのですが、?でした。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >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 」 というポップアップが現れるはずです。 試してみてください。

hakobulu
質問者

お礼

重ね重ね、恐れ入ります。 大変勉強になりました。 また、何かの折にはよろしくお願いいたします。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

#1 の Wendy02 です。 追伸: >1、lostfocusに設定すると、 やっと意味がわかりました。それは、コントロールツールのTextBox なのですね。TextBox は、都合、3つありますから、それが何を指すのか分からないことがあります。 私は、Userform の TextBox だと思ってしまいました。 ただ、#1 の回答で間違いがないかとは思います。

hakobulu
質問者

お礼

ありがとうございます。 間違いありませんでした。

関連するQ&A