3

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

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

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

3 回答 3

2

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

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

该设置不仅会应用于表单控件,还会应用于数据表视图中的表和查询。如果这不是您想要的,您可以在表单模块中使用 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
于 2012-06-22T18:10:47.883 回答
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
于 2012-06-25T19:59:32.230 回答
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 值

于 2012-06-22T16:29:37.230 回答