【问题标题】:VBA - How to Set Cursor in a Specific Position in a Textbox?VBA - 如何在文本框中的特定位置设置光标?
【发布时间】:2015-04-08 14:02:36
【问题描述】:

标题主要解释了我需要什么。我有一个文本框,我使用_keypress 过程不断检查数据的有效性。如果用户输入(,那么我会通过键入右括号) 为他们自动填写。结果为(),光标位于文本框的末尾。 我的问题是,如何将光标后退一步以将其放在两个括号之间?谢谢,

编辑:测试场景:

Private Sub txtInput_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

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

End Sub

希望这样可以更清楚,

【问题讨论】:

    标签: vba textbox text-cursor


    【解决方案1】:

    使用TextBox 对象的SelStart 属性:

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

    注意:SelStart=1 表示光标将在第一个元素之后,即“(”。因此,您应该使用您的字符串来了解您想要的 SelStart 属性值应该是什么。

    【讨论】:

    • 还有一个问题,有没有办法返回光标所在位置的编号?
    • 您需要调用 Windows API 检查support.microsoft.com/kb/152969/en-us?wa=wsignin1.0
    • 我需要它来返回光标在文本框中的位置吗?
    • @Grendizer 我猜这是同一个属性,SelStart。如果你写“SelStart = 2”,你设置它的值,但如果你写 pos = SelStart,你应该得到它的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    相关资源
    最近更新 更多