1

我对 VBA 比较陌生,正在为我的雇主开发一个小型数据库。我正在尝试创建一个文本框,单击该文本框会删除我放入其中的内容。例如,我有一个文本框,上面写着“第一”,让他们输入成员的名字。当他们点击它时,我希望我的文字消失,这样他们就可以输入他们想要的内容。(它只执行一次的问题很容易用 if 语句解决)。我查看了以下问题,但没有一个答案对我有用;

单击后清除文本框中的文本

下面的代码什么也没做

Private Sub TextBox1_GotFocus()
TextBox1.Text = ""
End Sub

下面的代码在“句柄”上给了我一个“预期的,语句结束”的编译错误;

Private Sub txtNewNameHere_GotFocus() Handles txtNewNameHere.GotFocus
txtNewNameHere.Text = ""
End Sub

不知道为什么其中任何一个都不适合我,但是,正如我所说,我对此比较陌生。非常感谢任何帮助。

4

5 回答 5

2

如果它还没有焦点,这将清除焦点上的文本框:

Private Sub TextBox1_Enter()
    TextBox1.Value = ""
End Sub

每次单击它都不会清除文本框。这有帮助吗?

于 2012-07-10T07:45:35.043 回答
1

假设您的文本框的名称是“Text1”以下事件将执行您要查找的操作:

Private Sub Text1_GotFocus()
    If Me.Text1.Value = "First" Then
        Me.Text1.Value = ""
    End If
End Sub

我总是把我。在对象前面引用表单。

我不清楚您的文本框的名称是上面代码示例中的“TextBox1”还是“txtNewNameHere”,所以我只是在上面的代码中使用了通用的“Text1”。

如果您不确定自己的文本框名称是什么,请右键单击文本框并选择“属性”

更新:假设文本框位于表单对象中。

于 2012-07-10T00:17:41.597 回答
1

即使经过了这么长时间,这也是谷歌的主要结果之一,所以我想分享有关此事的信息,这可能会让那些在这件事上几个小时后可以访问该页面的人更容易:

以下方法仅适用于无界控件:

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

这也使得在其他控件/事件中重用该功能成为可能。

于 2019-06-14T13:25:09.053 回答
0

请尝试使用下面的代码来取消/重置 vba 表单中的值

    Private Sub CommandButton2_Click()
    TextBox1.Value = Null
    TextBox2.Value = Null
    TextBox3.Value = Null
    TextBox4.Value = Null
    End Sub
于 2020-06-24T11:32:22.787 回答
0

我知道这是很久以前发布的,但如果有人发现自己在这里,这里是更新的;

Private Sub Textbox1_Click(sender As Object, e As EventArgs) Handles Textbox1.Click
        Textbox1.Text = ""
    End Sub
于 2021-11-27T14:12:09.357 回答