vba Excel - 仅选择文本框中的最后一个字符

时间:2018-01-12 08:39:40

标签: vba

我有一个表格,我可以在其中输入订单。其中一个字段是订单号文本框。现在很多人都知道,订单数量可能很长,而且它们大多数都是数字化的(我曾经读过一次 - 主要是)。所以我想标记到订单文本框,并让它只突出显示最后一个数字(我输入的上一个订单号仍然在文本框中),这样如果数字是5467245,那么它只会突出显示号码5,我只需按6即可将号码更改为4567246

PS:我想过只是自动为订单号添加+1,但有时他们会跳过一个数字,然后我必须按7而不是6来保持上面的例子。

根据这个答案,我目前所拥有的是:Highlight all text in textbox once it is activated

Private Sub txb_orderNumber_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
        With txb_orderNumber
        .SetFocus
        If Len(.Text) > 0 Then
            .SelStart = Len(.Text) - 1
            .SelLength = 1
        End If

    End With
End Sub 

但它只有在我用鼠标点击文本框时才有效(所以它实际上有效,但只有鼠标点击),即使作者说它会在我标签时有效文本框 - 但是当我插入它时它不起作用(这可能是因为我不想突出显示整个值,如在他的例子中)。而且我真的需要它来使用tab键。

所以这就是问题 - 当我选中文本框时如何才能使它工作

1 个答案:

答案 0 :(得分:1)

我发现您的代码适用于Enter事件,并且控件EnterFieldBehavior属性设置为1 - fmEnterFieldBehaviorRecallSelection

Private Sub txtb_orderNumber_Enter()
    With Me.txtb_orderNumber
        If Len(.Text) > 0 Then
            .SelStart = Len(.Text) - 1
            .SelLength = 1
        End If
    End With
End Sub