A Question for Ron de Bruin

J

Jamal

Ron,

I asked a question on 5 Jan regarding exit event of a text
box and getting focus back if the entry did not meet
certain criteria. You kindly answered the question. It
generated a lot of interest from others regarding the
frame control. I aprreciate your help and thank you for
helping.It did help me.

I have now removed the offending frames from the userform.
However, the code below works fine if I remove the Msgbox.
Once the msgbox code is executed the focus is lost to the
msgbox and deos not come back to the textbox.

Is this a known problem or can it be resolved? Thanks so
much for for your help.

Your answer was
Private Sub TextBox1_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If TextBox1.Value <> 100 Then
Cancel = True
MsgBox "You must enter ....."
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Text)
End If
End Sub

My original Qs was
I am trying to write code so that when the value entered
in a textbox does not meet certain criteria, the text in
the textbox is selected for correction by the user. Please
see the code below.

Once the user presses the tab key the message is displayed
but the focus is lost and goes on to the next textbox or
next frame if the textbox is the last one in the current
frame. I have tried before update and change as well as
exit. What am I doing wrong? How can I get it to go back
and highlight the textbox with incorrect text/value.
Thanks for your help.


Private Sub TextBox1_Exit(ByVal Cancel As
MSForms.ReturnBoolean)

If TextBox1.Value <> 100 Then

msgbox "You must enter ....."

TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Text)

End Sub
 
B

Bob Phillips

Jamal,

You simply forgot to set the Cancel argument

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If TextBox1.Value <> 100 Then

MsgBox "You must enter ....."

TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Text)
Cancel = True
End If

End Sub
 
T

Tom Ogilvy

Private Sub TextBox1_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If TextBox1.Value <> 100 Then
Cancel = True
MsgBox "You must enter ....."
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Text)
End If
End Sub


worked fine for me in a userform with two textboxes, a commandbutton and no
frames.

If the user can only enter 100, why not just have your code enter it an be
done with it. (use a label, not a textbox). Unless this is just a
simplified example.
 

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

Similar Threads


Top