Cursor Location

J

Jack

Hello all,

I have a text box on a form. In the text box, I do not
allow someone to use the "#" symbol, but using the method
I use, when I remove the symbol after someone tries to use
it, the cursor is restored to the beginning of the string
or not at all. I would like the cursor to be at the end of
the string so the user can just continue typing after
dismissing the error box. Here is the code I'm using:


Private Sub txtValue_Change()

If Right(txtValue, 1) = "#" Then
MsgBox "You may not use the ""#"" symbol for this
value!", vbOKOnly + vbExclamation, "Invalid Character..."
txtValue = Left(txtValue, Len(txtValue) - 1)
txtValue.SetFocus
End If

End Sub


Does anyone know how I can programmatically tell the
cursor to go to the end of the string in the textbox on
focus?

Thanks for any advice, Jack
 
K

kiat

You may like to consider using keypress event instead of change event. Your
code isn't full proof, the user can type "#" in the middle of the text and
the code won't detect it.

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 35 Then
KeyAscii = 0
MsgBox "invalid character"
End If
End Sub

Use SelStart to place the cursor within the text box. To go to the end:
TextBox1.SelStart = 1000
or set it to Len(TextBox1.Text)
 
F

Frederick

Jack use the KeyPress Event of your TextBox it is made for this situation


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If KeyAscii = 35 Then ' Detect the # Key
MsgBox "Sorry cannot Enter a " & Chr(35) & " in this Field "
KeyAscii = 0 'Cancel the KeyStroke
End If

End Sub


Fred
 
J

Jack

Absolutely awesome! Thanks for the help, kiat and
thanks also for pointing out the flaw in my using the
change event, I have changed it to the keypress event as
you suggested.

-Jack
 

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