如果用户开始从文本框中删除数据,请执行操作

时间:2013-12-16 22:02:56

标签: vba ms-access ms-access-2007 access-vba

我有一个带有文本框的访问表单,用户可以使用列表框更新或直接编辑它,如果用户开始从此文本框中删除,我需要执行操作,如果他开始添加数据只有在他开始从中删除时才会出现问题,例如:

Private Sub textbox_AfterUpdate()

   If Me.[textbox].SelStart = Len(Me.[textbox].Text) - 1 Then

    ' do something
   else

    ' do something else

   End If


End Sub

2 个答案:

答案 0 :(得分:2)

您可能希望使用KeyDown事件代替AfterUpdate

这会捕获 Backspace Del 按钮。

Private Sub Text0_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 8 Or KeyCode = 46 Then
        MsgBox "Text was deleted"
    End If
End Sub

可能有其他删除文本的情况,例如 Ctrl + X 所以你可以捕获所有这些。

答案 1 :(得分:1)

您可能想要考虑更改事件,text属性是具有焦点的控件的当前未保存内容,value属性是具有焦点的控件的已保存内容。

更改的优点是用户不能简单地将字母插入现有字符串,例如,用户不能更改20米到200米。

Private Sub AText_Change()
''If the current content is the same as the 
''previous content with something added 
If Me.AText.Text Like Me.AText.Value & "*" Then
    ''Ok
Else
    ''Problem
    MsgBox "Not allowed"
    Me.AText = Me.AText.Value
End If
End Sub

您还可以允许保存的内容成为当前内容的子字符串。