如何使用命令按钮在文本框中的现有文本中插入新文本?

问题描述 投票:0回答:2

我有一个自定义计算器按下按钮时,将其标题插入文本框。

Private Sub CmdBtn_Click()
   Me.TextBox.Value = Me.TextBox.Value & " " & CmdBtn.Caption
End Sub

它工作正常。但是,使用此方法无法在已存在的文本中插入新文本。例如,如果当前文本是“abc”,那么我想在“a”和“bc”之间输入“x”以给出“axbc”的最终结果。我将光标放在应放置新文本的所需位置。有人知道如何实现它?谢谢,

vba access-vba
2个回答
0
投票

离开文本框时使用变量存储光标位置:

Option Compare Database
Option Explicit

Private LastPosition    As Long

Private Sub CmdBtn_Click()

    Dim Text    As String

    Text = Me!TargetBox.Value

    ' Insert source text at the stored position.
    Me!TargetBox.Value = Left(Text, LastPosition) & Me!SourceBox.Value & Mid(Text, LastPosition + 1)

End Sub

Private Sub UserName_LostFocus()

    ' Store cursor position.
    LastPosition = Me!UserName.SelStart

End Sub

0
投票

下面的解决方案非常适合在TextBox的任何位置输入文本。如果有人有比这更好的解决方案,请告诉我。

Private LastPosition as Long
Private Text as String

Private Sub TextBox_LostFocus()
        If LastPosition = 0 and IsNull(Me!TextBox.Value) Then
              Me!TextBox = " " + Me.ActiveControl.Caption
              LastPosition = LastPosition + Len(Me.ActiveControl.Caption)
        ElseIf 
              LastPosition >= AND Not IsNull(Me!TextBox.Value) Then
              Text = Me!TextBox.Value

              Me!TextBox.Value = Left( Text, LastPosition) & " " & _
              Me.ActiveControl.Caption & Mid(Text, LastPosition + 1)

              LastPosition = LastPosition + Len(Me.ActiveControl.Caption)

        Else  
              Me!TextBox.Value = Me!TextBox.Value + " " + Me.ActiveControl.Caption

        End If

 End Sub
© www.soinside.com 2019 - 2024. All rights reserved.