我在userform上有一个文本框。显示用户窗体时,文本框会打开一些 默认值。
我希望默认消息的Line1(或某些单词)以灰色显示,并且必须锁定才能进行编辑。有可能吗?
答案 0 :(得分:2)
锁定TextBox以进行编辑?
是的。有可能。
只需将.Locked
属性设置为True
锁定/着色只是textBox中第一行或部分文本?
否即可。在VBA中是不可能的。对于部分着色,您可能希望使用RichTextBox
代替TextBox
,但是您将无法再部分锁定控件。
修改强>
备用:由于第一行文字包含不应编辑的文字,因此为什么不使用ToolTip
.ControlTipText
属性在TextBox
中显示该信息{1}}或说出当您将鼠标悬停在Label
顶部时显示的TextBox
?
例如(使用.ControlTipText
属性)
Option Explicit
'~~> This is what goes in the tooltip. Amend as applicable.
Const sMsg As String = "Hello World! This is an example of tooltip text"
Private Sub UserForm_Initialize()
Dim sSample As String
Dim i As Long
For i = 1 To 10
sSample = sSample & "Blah Blah" & i & vbNewLine
Next i
TextBox1.Text = sSample
'~~> Set to starting point
TextBox1.SelStart = 0
End Sub
Private Sub TextBox1_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
TextBox1.ControlTipText = sMsg
End Sub
现在当您将文本悬停在TextBox顶部时,您将看到ToolTip
答案 1 :(得分:0)
这是一种解决方法,而不是解决方案,但它完美无缺(至少在我的电脑上)。
Const defaultLine As String = "YourText" & vbcrlf
Private Sub TextBox1_Change()
Static oldValue As String
'set oldValue if empty
If oldValue = "" Then
oldValue = defaultLine
End If
'disable the change of the first line
If Left(TextBox1.Value, Len(defaultLine)) <> defaultLine Then
TextBox1.Value = oldValue
Else
oldValue = TextBox1.Value
End If
End Sub
Private Sub UserForm_Initialize()
TextBox1.Value = defaultLine
End Sub