TextBox中的每个字符在vba中都有不同的颜色

时间:2014-05-11 21:36:18

标签: excel vba excel-vba textbox

我正在寻找一种方法,使用VBA以不同颜色显示 UserForm TextBox 中的每个字母。例如,第一个字符红色,第二个蓝色,第三个......有没有办法做到这一点?

1 个答案:

答案 0 :(得分:4)

使用 TextBox Control 是不可能的 但是,如果您使用的是 Excel 2010 或更高版本,则可以使用 InkEdit Control
它是工具>下的附加控件。附加控制(Excel VBE)

enter image description here

一旦您添加了它,它将在您的工具箱中提供,如下所示。

enter image description here

然后,您可以将其用作 UserForm 中的另一个 Control
要了解有关使用 InkEdit Control 可以执行的操作的更多信息,请选中MSDN
顺便说一下,这是一个示例代码,根据您键入的位置为条目(每个字符)着色。

Private Sub InkEdit1_Change()

Dim i As Long

If Me.InkEdit1.Text <> "" Then
    For i = 1 To Len(Me.InkEdit1.Text)
        Me.InkEdit1.SelStart = i - 1 '~~> identifies the start of selection
        Me.InkEdit1.SelLength = 1 '~~> identifies the length of selection
        Select Case i
        Case 1: Me.InkEdit1.SelColor = RGB(255, 0, 0) '~~> colors 1st char Red
        Case 2: Me.InkEdit1.SelColor = RGB(0, 255, 0) '~~> colors 2nd char Green
        Case 3: Me.InkEdit1.SelColor = RGB(0, 0, 255) '~~> colors 3rd char Blue
        Case 4: Me.InkEdit1.SelColor = RGB(255, 255, 0) '~~> colors 4th char Yellow
        Case 5: Me.InkEdit1.SelColor = RGB(255, 0, 255) '~~> colors 5th char Indigo
        End Select
        Me.InkEdit1.SelStart = i '~~> this puts the cursor to end
    Next
End If

End Sub

对于上面的示例,我将控件中输入的字符数限制为5.
InkEdit 都接受 RGB 颜色索引,但我很擅长使用 RGB
你的问题缺乏细节,所以我不能提供更多;希望这对你有所帮助 如果有的话,你的Excel版本不是2010版,我认为对于较低版本也是如此。

<强>结果:
enter image description here