按键时清除文本框
Posted
技术标签:
【中文标题】按键时清除文本框【英文标题】:Clear Textbox on key press 【发布时间】:2012-06-22 15:42:54 【问题描述】:有没有办法像在 excel 中一样清除按键上的文本框。
我尝试了以下代码,但单击文本框时会清除文本。我希望它在按下某个键时清除它。
Private Sub Text10_GotFocus()
Text10.Value = ""
End Sub
【问题讨论】:
how to clear text box inside a macro? 的可能重复项 功能应该和excel一样。在excel中输入一个数字,然后单击其他地方。当您再次单击同一文本框并按下某个键时,它会被删除。我想实现相同的功能。 【参考方案1】:只要该控件获得焦点,您就可以选择该控件的整个文本内容。然后您的按键将替换选定的文本。
如果您希望每个表单上的每个文本框都发生这种情况,您可以将“行为输入字段”设置为“选择整个字段”。 (在 Access 2007 中,从 Office 按钮 -> Access 选项 -> 高级中找到该设置,然后在该对话框的“编辑”标题下查看。对于 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
【讨论】:
【参考方案2】:Private Sub Field1_KeyPress(KeyAscii As Integer)
If KeyAscii = 65 Then Me.Field1 = ""
'Or: If Chr(KeyAscii) = "A" Then Me.Field1 = ""
End Sub
将数字更改为您要用于清除字段的任何键的 ascii 值
【讨论】:
我试过上面的方法,每次按一个键它都会被删除。 msdn.microsoft.com/en-us/library/aa165567%28v=office.10%29.aspx 有关于该事件的信息。 KeyAscii 应该是按下的键的值 - 尝试使用msgbox KeyAcii
来查看传递给例程的内容【参考方案3】:
声明一个表单级变量
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
【讨论】:
以上是关于按键时清除文本框的主要内容,如果未能解决你的问题,请参考以下文章
当我们使用 JavaScript 隐藏/显示时清除下拉列表和/或文本框内容当它们被交替选择时
向上和向下键未触发 datagridview 单元格中的按键事件文本框