按键清除文本框

时间:2012-06-22 15:42:55

标签: ms-access vba access-vba ms-access-2003

有没有办法像在Excel中那样清除按键上的文本框。

我尝试了以下代码,但在单击文本框时会清除文本。我希望它在按下某个键时清除它。

Private Sub Text10_GotFocus()
Text10.Value = ""
End Sub

3 个答案:

答案 0 :(得分:2)

只要该控件获得焦点,您就可以选择控件的整个文本内容。然后您的按键将替换所选文本。

如果您希望每个表单上的每个文本框都能出现这种情况,可以将“行为输入字段”设置为“选择整个字段”。 (在Access 2007中,从Office按钮中找到该设置 - >访问选项 - >高级,然后查看该对话框的编辑标题下。对于Access 2003,请参阅this page。)

不仅将该设置应用于表单控件,还应用于数据表视图中的表和查询。如果这不是您想要的,您可以在表单的模块中使用VBA来选择仅特定控件的文本:

Private Sub MyTextBox_GotFocus()
    Me.MyTextBox.SelStart = 0
    Me.MyTextBox.SelLength = Len(Me.MyTextBox)
End Sub

如果您想为多个控件执行此操作,则可以创建一般过程:

Private Sub SelectWholeField()
    Me.ActiveControl.SelStart = 0
    Me.ActiveControl.SelLength = Len(Me.ActiveControl)
End Sub

然后从单个控件的焦点事件中调用该过程,如下所示:

Private Sub MyTextBox_GotFocus()
    SelectWholeField
End Sub

答案 1 :(得分:0)

Private Sub Field1_KeyPress(KeyAscii As Integer)
If KeyAscii = 65 Then Me.Field1 = ""
'Or: If Chr(KeyAscii) = "A" Then Me.Field1 = ""
End Sub

将数字更改为您要用于清除字段的任何键的ascii值

答案 2 :(得分:0)

声明表单级别变量

Private CanDelete as Boolean

当TextBox获得焦点时,将CanDelete设置为True

Private Sub txtTest_GotFocus()
  CanDelete = True
End Sub

在KeyPress事件中,如果CanDelete为True,则清除文本

Private Sub txtTest_KeyPress(KeyAscii As Integer)
  If CanDelete Then
    Me.txtTest = ""
    CanDelete = False
  End If
End Sub