Thread: Cursor Location
View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
kiat kiat is offline
external usenet poster
 
Posts: 34
Default Cursor Location

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)

"Jack" wrote in message
...
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