2015-02-08 498 views
3

标题主要解释我需要什么。我有一个文本框,我使用_keypress过程不断检查数据有效性。如果用户输入(,那么我通过输入右括号)自动填充它们。结果是(),并且光标位于文本框的末尾。 我的问题是,我如何将光标向后推一步放在两个括号之间?谢谢,VBA - 如何在文本框中的特定位置设置光标?

编辑:测试场景:

Private Sub txtInput_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 

    If KeyAscii = Asc("(") Then 
     txtInput.value = txtInput.value & "()" 
     KeyAscii = 0 
    End If 

End Sub 

希望这使得它更清晰,

回答

4

使用TextBox对象的SelStart属性:

Me.TextBox1.Value = "()" 
Me.TextBox1.SelStart = 1 

注:SelStart=1指光标将位于第一个元素之后,即“(”。因此,你应该玩你的字符串,以了解你想要的属性值应该是多少。

+0

这是一个很好的开始!我会从那里加强它!谢谢, – Grendizer 2015-02-08 22:05:46

+0

还有一个问题,有没有办法返回光标所在的位置编号? – Grendizer 2015-02-08 22:07:55

+0

您将需要打电话给Windows API检查https://support.microsoft.com/kb/152969/en-us?wa=wsignin1.0 – Jeanno 2015-02-08 22:14:47