SetFocus Not working

M

Mike Archer

Hello. I have a userform with a textbox and a commandbutton that are not
working as expected with regard to setfocus.

After commandbutton3 is clicked, I want to set the focus to textbox3. This
works just fine. However, I have a keydown event in textbox3 that runs
commandbutton3_click sub if the enter key is pressed. When this event runs,
everything works except textbox3.setfocus. Any help is appreciated.

Private Sub CommandButton3_Click()
If TextBox3.Value <> Empty Then
ListBox1.AddItem TextBox3.Value
TextBox3.Value = Empty
TextBox3.SetFocus
End If
End Sub

Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
If KeyCode = 13 Then
CommandButton3_Click
End If
End Sub
 
M

michdenis

Hi,

Try this way :

'-------------------------------------
Private Sub CommandButton3_Click()
If TextBox3.Value <> Empty Then
ListBox1.AddItem TextBox3.Value
TextBox3.Value = Empty
End If
TextBox3.SetFocus
End Sub
'-------------------------------------



"Mike Archer" <[email protected]> a écrit dans le message de groupe de
discussion : (e-mail address removed)...
Hello. I have a userform with a textbox and a commandbutton that are not
working as expected with regard to setfocus.

After commandbutton3 is clicked, I want to set the focus to textbox3. This
works just fine. However, I have a keydown event in textbox3 that runs
commandbutton3_click sub if the enter key is pressed. When this event runs,
everything works except textbox3.setfocus. Any help is appreciated.

Private Sub CommandButton3_Click()
If TextBox3.Value <> Empty Then
ListBox1.AddItem TextBox3.Value
TextBox3.Value = Empty
TextBox3.SetFocus
End If
End Sub

Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
If KeyCode = 13 Then
CommandButton3_Click
End If
End Sub
 
R

Ryan H

Naturally when you hit the Enter key (KeyCode = 13) Excel exits the textbox.
Actually, your code is working properly, but the Exit_Event fires after your
TextBox3.SetFocus code runs. Check out the code in the Exit Event. This
worked for me. Try it! Hope this helps! If so, let me know, click "YES"
below.

Option Explicit

Dim mySetFocus As Boolean

Private Sub CommandButton3_Click()

If TextBox3.Value <> Empty Then
ListBox1.AddItem TextBox3.Value
TextBox3.Value = Empty
TextBox3.SetFocus
mySetFocus = True
End If

End Sub

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = mySetFocus
mySetFocus = False
End Sub

Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)

If KeyCode = 13 Then
CommandButton3_Click
End If

End Sub
 
M

Mike Archer

Perfect. Thank you!
--
Thanks,
Mike


Ryan H said:
Naturally when you hit the Enter key (KeyCode = 13) Excel exits the textbox.
Actually, your code is working properly, but the Exit_Event fires after your
TextBox3.SetFocus code runs. Check out the code in the Exit Event. This
worked for me. Try it! Hope this helps! If so, let me know, click "YES"
below.

Option Explicit

Dim mySetFocus As Boolean

Private Sub CommandButton3_Click()

If TextBox3.Value <> Empty Then
ListBox1.AddItem TextBox3.Value
TextBox3.Value = Empty
TextBox3.SetFocus
mySetFocus = True
End If

End Sub

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = mySetFocus
mySetFocus = False
End Sub

Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)

If KeyCode = 13 Then
CommandButton3_Click
End If

End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top