我对VBA比较陌生,正在为我的雇主开发一个小型数据库。我正在尝试创建一个文本框,单击该文本框时,将删除我放入其中的内容。例如,我有一个文本框,上面写着“第一个”,以便他们输入成员的名字。当他们点击它时,我希望我的文本消失,这样他们就可以输入他们想要的内容。 (只执行一次的问题很容易用if语句解决)。我已经看了下面这个问题,但这两个答案都没有对我有用;
Clear text in textbox upon clicking it
以下代码没有做任何事情
Private Sub TextBox1_GotFocus()
TextBox1.Text = ""
End Sub
以下代码在“Handles”上给出了“预期,结束语句”编译错误;
Private Sub txtNewNameHere_GotFocus() Handles txtNewNameHere.GotFocus
txtNewNameHere.Text = ""
End Sub
不确定为什么其中任何一个对我不起作用,但是,正如我所说,我对此比较陌生。非常感谢任何帮助。
答案 0 :(得分:2)
假设您的文本框名称为“Text1”,以下事件将执行您要查找的内容:
Private Sub Text1_GotFocus()
If Me.Text1.Value = "First" Then
Me.Text1.Value = ""
End If
End Sub
我总是把我。在对象前面引用表单。
我不清楚你的文本框的名称是上面的代码示例中的'TextBox1'还是'txtNewNameHere'所以我只是在上面的代码中使用了通用的'Text1'。
如果您不确定自己的文本框名称是什么,请右键单击文本框并选择“属性”
更新: 假设文本框位于表单对象中。
答案 1 :(得分:1)
如果没有焦点,这将清除焦点上的文本框:
Private Sub TextBox1_Enter()
TextBox1.Value = ""
End Sub
每次单击时都不会清除文本框。这有帮助吗?
答案 2 :(得分:1)
即使是所有这些时间,这也是google的主要结果之一,因此,我想分享有关此问题的信息,这些信息可能会使以后可能在几个小时后到达该页面的人更轻松关于此事:
以下方法仅适用于无界控件:
Private Sub Text1_GotFocus()
If Me.Text1.Value = "First" Then
Me.Text1.Value = ""
End If
End Sub
我所做的是创建一个遍历所有控件的函数,检查它们是否有界,如果没有界,则为默认值赋予属性:
以下功能的注意事项: 1-我认为“ DefaultValue”比“”更好,但这也可以。 2-需要“选择大小写”,否则找不到.ControlSource属性。 3-如果需要,您可以检查每种类型的控件的边界,我只有带有边界的文本框。 4-“ Me.Refresh”将绑定控件设置为默认值,只要绑定与相同格式的控件相关即可。
Function ClearControls(frm As Form)
Dim ctrl As Control
For Each ctrl In frm.Controls
Select Case ctrl.ControlType
Case acTextBox
If ctrl.ControlSource = Null Then
ctrl.Value = ctrl.DefaultValue
End If
Case acOptionGroup, acComboBox, acListBox
ctrl.Value = Null
Case acCheckBox
ctrl.Value = False
End Select
Next
Me.Refresh
End Sub
因此,在单击事件代码上,我仅按以下方式调用了ClearControls函数:
ClearControls Me
这也使得可以在其他控件/事件中重用该功能。
答案 3 :(得分:0)
请尝试使用以下代码无效/重置vba表单中的值
Private Sub CommandButton2_Click()
TextBox1.Value = Null
TextBox2.Value = Null
TextBox3.Value = Null
TextBox4.Value = Null
End Sub