点击文本框时清除文本

6

我有一个文本框,上面写着“NEW NAME HERE”。

在VBA中,当用户点击这个文本框时,是否可以立即清除这段文字?

如果可以,请告诉我如何操作。

谢谢!


1
您可以编辑问题并添加细节,而不是将其发布为答案。 - Dheer
4个回答

4
假设这个文本框的名称为TextBox1,以下代码应该可以工作。
Private Sub TextBox1_GotFocus()
    TextBox1.Text = ""
End Sub

3
我知道这是一篇旧文章,但我刚刚偶然看到它,想要添加一个答案。也许有一天会有人发现它很有用:-) 在清除内容之前,建议首先检查当前值。这样,当您第一次点击它时,它会清除内容,但如果稍后再次单击它(例如编辑名称),它将不执行任何操作,允许编辑而无需重新开始。
假设TextBox的名称为TextBox1,占位文本为NEW NAME HERE,以下应该可以工作。
Private Sub TextBox1_Enter()
    If TextBox1.Text = "NEW NAME HERE" Then
        TextBox1.Text = ""
    End If
End Sub

如果文本框为空,则恢复占位符文本:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Trim(TextBox1.Text) = "" Then
        TextBox1.Text = "NEW NAME HERE"
    End If
End Sub

在Word 2010 VBA中进行了测试


1

我尝试了不带 Handles 部分的代码(就像另一个回答的人一样),但没有任何效果。我确认下面的代码对我有效。

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

希望这能帮助到某些人,尽管这个问题有点老了。


1
Handles 在 VBA 中不起作用。也许 @J. Rusell 尝试在 .NET 中使用过。 - ZygD
啊,糟糕,我差点没注意到这个评论,有一段时间没有使用堆栈了。总之,你是对的,在我“帮忙”的时候,我可能正在使用普通的.Net VB,不知道到去年才意识到那和VBA之间的区别 :/——我会把这个错误答案留下来以供后人参考……不过还是谢谢你指出来。 - J. Russell

1
Private Sub Textbox1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Textbox1.MouseClick
    textbox1.clear()
End Sub

试试这个。我刚在daniweb上找到了这段代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接