如何在VBA中的文本框中添加提示横幅/水印?

时间:2018-09-20 07:26:45

标签: vba textbox

如何在vba中创建一个文本框,当文本框为空时显示一个浅灰色的文本(例如stackoverflow-search框中的“ Search ...”)?

2 个答案:

答案 0 :(得分:1)

我认为最简单的方法是拥有2个文本框-一个有背景,一个没有背景。

顶部没有背景的位置,您可以在其中键入文本。一个背景的背景位于其后,因此无法选择。当顶部文本框中有文本时,底部文本框为空。当可编辑文本框为空时,背景框中将包含文本。

或者,如果您使用ActiveX文本框作为顶层,则可以使用BackStyle选项来切换透明度,如下所示:

Private Sub TextBox1_LostFocus()
    If Len(TextBox1.Value) > 0 Then
        TextBox1.BackStyle = fmBackStyleOpaque
    Else
        TextBox1.BackStyle = fmBackStyleTransparent
    End If
End Sub

答案 1 :(得分:1)

我做过的最简单的事情是创建一个测试框,其文本为DD / MM / YYYY,前色为&H8000000A&(灰色)。这将使提示横幅外观出现在文本框中。 其次,我输入了2个代码,其中之一输入了退出文本框:

  1. 当您单击文本框时,DD / MM / YYYY文本将消失,并且用户输入的原始文本将为原色黑色

     Private Sub TextBox1_Enter()
       TextBox1.Text = ""
       TextBox1.ForeColor = &H80000008 'User input in Black color
     End Sub
    
  2. 如果该文本框再次为空白,则该文本框将以灰色显示提示横幅:

     Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     If TextBox1.Text = "" Then
     TextBox1.Text = "DD/MM/YYYY" 'Cue Banner Text
     TextBox1.ForeColor = &H8000000A 'GREY
     End If
     End Sub