アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります

今、TextBoxを並べて入力しようとしていますが
EnterKey入力では文字を全部、青く選択するのですが
↑Keyではカーソルが文字の後ろに
↓Keyではカーソルが文字の前に来るだけで青く選択してくれません
これってダメなんですかね、教えてください

一応、質問用にプログラムを用意しました
Sub test()
UserForm1.Show
End Sub

Option Explicit
Dim isw
Private Sub UserForm_Activate()
TextBox1.Value = 10
TextBox2.Value = 20
TextBox1.SetFocu
End Sub

Private Sub TextBox1_Enter() 'テキストボックスに入ったら色変える
isw = 1
With TextBox1
.BackColor = RGB(&H0, &HFF, &HFF)
.SelStart = 0
.SelLength = Len(TextBox1)
End With
End Sub

Private Sub TextBox2_Enter() 'テキストボックスに入ったら色変える
isw = 2
With TextBox2
.BackColor = RGB(&H0, &HFF, &HFF)
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox1.Text) Then
TextBox1.BackColor = RGB(&HFF, &HFF, &HFF)
ElseIf TextBox1 <> "" Then
MsgBox ("数値以外の文字が入力されています")
TextBox1 = ""
Cancel = True
End If
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If IsNumeric(TextBox2.Text) Then
TextBox2.BackColor = RGB(&HFF, &HFF, &HFF)
ElseIf TextBox2 <> "" Then
MsgBox ("数値以外の文字が入力されています")
TextBox2 = ""
Cancel = True
End If

End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call chkFKey(KeyCode)
End Sub

Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call chkFKey(KeyCode)
End Sub

Private Sub chkFKey(ByVal KeyCode As MSForms.ReturnInteger)
If KeyCode = vbKeyReturn Then
If isw = 2 Then isw = 0
With Me.Controls("TextBox" & isw + 1)
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
ElseIf KeyCode = vbKeyDown Then
If isw = 2 Then isw = 0
With Me.Controls("TextBox" & isw + 1)
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
ElseIf KeyCode = vbKeyUp Then
If isw = 1 Then isw = 3
With Me.Controls("TextBox" & isw - 1)
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
End Sub

長くてすみません
以上、宜しくお願い致します

「Vba SelStart、SelLen教」の質問画像

A 回答 (1件)

矢印キー が生きていますから


せっかく SelStart を 設定しても
その後に 矢印キー を押した場合の動作をしてしまいますね。

矢印キー を 無かったことにしましょう。

ElseIf KeyCode = vbKeyDown Then
KeyCode = 0  ' この行追加
If isw = 2 Then isw = 0

などのように。
    • good
    • 0
この回答へのお礼

いつもお世話様です
出来ました

本当にありがとうございました
これからもよろしくお願いいたします

お礼日時:2024/04/27 12:30

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

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


このQ&Aを見た人がよく見るQ&A