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

いつもお世話になります。
OSはWin10, エクセルは2016 です。

下記の構文で新たに ListBox を2個入れました。

例えば、
※1(txtbox)~※2(ListBox1) エンターキーを押しますがカーソルが点滅せず
セレクトされているのかが分かりませんん。
但しリスト項目の一番上が点線に囲まれポイントで必要とする項目をクリックすると反転します。
そこでまたまたエンターキーを押すと次のTextboxにはカーソルが点滅しません。

TextBox~ListBox 又はそのの逆で ListBox~TextBooox Enter Kkeyによる移動が表示されず手動
の作業で対応しています。

 TextBox間なら上手くいきます。

 ※関係ないかもしれませんがTableIndexは0~順序良く設定しています。

 この場合の対処方法をご指導いただけませんか。


参考むに
Private Sub cmdTouroku_Click()
If textTEL.Value = "" Then
MsgBox ("必須の電話番号が入力されていません。")
textTEL.SetFocus
Exit Sub
End If
Dim n As Long '行の変数
n = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(n, 1) = textKaisha.Text ※1

Cells(n, 2).Value = UserForm2.ListBox1.Value ※2

Cells(n, 5) = textYomi.Text ※3
Cells(n, 6) = TextRenmei.Text ※4

Cells(n, 7).Value = UserForm2.ListBox2.Value ※5

Cells(n, 8) = textYubin.Text
Cells(n, 11) = textJusho2.Text
Cells(n, 12) = textTEL.Text
Cells(n, 13) = textFAX.Text
Cells(n, 14) = textEmail.Text
Cells(n, 15) = textTantou.Text
Cells(n, 18) = textBiko.Text
Cells(n, 19) = textNyuryoku.Text

Dim errmsg As String
If textTEL.Text = "" Then errmsg = errmsg & "必須の電話番号が入力されていません。" + vbNewLine
textTEL.SetFocus
textKaisha.Text = ""
textYomi.Text = ""
ListBox1.Value = ""
TextRenmei.Text = ""
ListBox2.Value = ""
textYubin.Text = ""
textJusho2.Text = ""
textTEL.Text = ""
textFAX.Text = ""
textEmail.Text = ""
textTantou.Text = ""
textBiko.Text = ""
textNyuryoku.Text = ""
If Len(Trim(errmsg)) <> 0 Then
MsgBox errmsg
End If
textKaisha.SetFocus
For Each Ctrl In Me.Controls
If Ctrl.Name Like "text*" Then
Ctrl.Value = ""
End If
Next Ctrl
End Sub

A 回答 (1件)

ご質問と示されたコードの関係性は分かりませんが、


TextBoxはカーソルですが、ListBoxはFocusが移ると破線でItemが囲われます。

良く思い違いをされる事がありますが、Control間の移動はTabキーです。
Enterキーで移動しているように見えるのは、TabIndexに従って移動しています。
なので、正しい操作方法としては、ListBox1 Tabキー Listbox 上下矢印キーで選択/非選択(及びスペースキーで選択/非選択) Tabキー ListBox2 だと思います。

>※1(txtbox)~※2(ListBox1) エンターキーを押しますがカーソルが点滅せず
>セレクトされているのかが分かりませんん。
ListBoxにはカーソルはありません。

>但しリスト項目の一番上が点線に囲まれポイントで必要とする項目をクリックすると反転します。
上下矢印キーで選択/非選択(移動)(及びスペースキーで選択/非選択)

>そこでまたまたエンターキーを押すと次のTextboxにはカーソルが点滅しません。
特別な処理をしないとEnterキーでは移動しません。 Tabキーで移動します。

断言できる知識はありませんが、TextBoxでEnterキーは入力を確定していますが、
ListBoxでは選択で入力(値)が確定しているので
Enterキーが入力?出来ないのだと、、思いますが、違うかもしれません。

特別な処理?(ListBox1)
Private Sub ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 13 And Not ListBox1.Value = "" Then
Application.SendKeys ("{TAB}")
End If
End Sub
    • good
    • 0
この回答へのお礼

おはようございます。
おおいに役に立ちました。

この間のみは Tab Key でそれ以外は Enter Keyでうまくできました。

氏名(TextBox)⇒呼称1(ListBox)⇒連名(TextBox)⇒呼称2(ListBox)⇒郵便番号(TextBox)

回答がなかなか得られず半ばあきらめ手動で実行していましたた。

私事で恐縮ですがvBAの初心者がTextBox以外に初トライです。
朝からのサブライスの回答はすごく嬉しいです。

お礼日時:2020/03/28 06:53

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