VBA - 如何在文本框中设置光标到特定位置?

9
标题已经解释了我的需求。我有一个文本框,我使用_keypress过程不断检查数据的有效性。如果用户输入(,那么我会为他们自动填充一个右括号)。结果是(),光标在文本框的末尾。我的问题是,如何将光标向后推一步,使其位于两个括号之间?谢谢。
编辑:测试场景:
Private Sub txtInput_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

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

End Sub

希望这能让问题更加清晰明了。
2个回答

9
使用TextBox对象的SelStart属性:
Me.TextBox1.Value = "()"
Me.TextBox1.SelStart = 1

注意:SelStart=1 表示光标将位于第一个元素之后,即"("。因此,您应该操作字符串以了解您所需的SelStart属性值。

还有一个问题,是否有一种方法可以返回光标所在的位置编号? - Grendizer
你需要调用Windows API,查看https://support.microsoft.com/kb/152969/en-us?wa=wsignin1.0。 - Jeanno
我需要什么来返回文本框中光标的位置? - Grendizer
2
@Grendizer 我猜它是同一个属性,SelStart。如果你写了"SelStart = 2",你就设置它的值,但如果你写pos = SelStart,你应该是获取它的值。 - Matteo NNZ

0

使用SelStart属性和Len函数

Me.txtInput.SelStart = Len(Me.txtInput.Value)-1

使用这种方法,现在您可以确保它始终将输入光标设置在括号之间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接