我有一个自定义计算器,按下该按钮时会将其标题插入文本框。
Private Sub CmdBtn_Click()
Me.TextBox.Value = Me.TextBox.Value & " " & CmdBtn.Caption
End Sub
工作正常。但是,使用这种方法不能将新文本插入已经存在的文本中。例如,如果当前文本为“ abc”,那么我想在“ a”和“ bc”之间输入“ x”,以得到最终结果“ axbc”。我将光标放在应该放置新文本的位置。有人知道如何实现吗? 谢谢,
答案 0 :(得分: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
答案 1 :(得分: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