如何在vba中创建一个文本框,当文本框为空时显示一个浅灰色的文本(例如stackoverflow-search框中的“ Search ...”)?
答案 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个代码,其中之一输入了退出文本框:
当您单击文本框时,DD / MM / YYYY文本将消失,并且用户输入的原始文本将为原色黑色
Private Sub TextBox1_Enter()
TextBox1.Text = ""
TextBox1.ForeColor = &H80000008 'User input in Black color
End Sub
如果该文本框再次为空白,则该文本框将以灰色显示提示横幅:
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