【问题标题】:Every character in TextBox in different color in vba excelvba excel中不同颜色的TextBox中的每个字符
【发布时间】:2014-05-11 21:36:18
【问题描述】:

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

【问题讨论】:

    标签: vba excel textbox


    【解决方案1】:

    使用 TextBox 控件 无法做到这一点。
    但是,如果您使用 Excel 2010 或更高版本,则可以使用 InkEdit Control
    它是工具 > 附加控件 (Excel VBE) 下的附加控件。

    添加后,它会出现在您的工具箱中,如下所示。

    然后您可以将它用作您的 UserForm 中的另一个 Control
    要详细了解您可以使用 InkEdit 控件 做什么,请查看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颜色索引 em> 但我很喜欢使用 RGB
    你的问题缺乏细节,所以我不能提供更多;只是希望这对您有所帮助。
    如果有的话,您的 Excel 版本不是 2010,我认为对于较低版本也有等效控件。

    结果:

    【讨论】:

    • @pnuts haha​​ 实际上是我第一次编写代码时遵循的,但 RGB 序列看起来不错。 :D
    • @pnuts 我认为没有更好的方法。加上展示如何从 RGB 等效的十六进制转换的奖金。 :D
    • @pnuts 不,我见过最糟糕的:D
    猜你喜欢
    • 1970-01-01
    • 2017-11-07
    • 2018-11-03
    • 1970-01-01
    • 2012-10-15
    • 2011-09-12
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    相关资源
    最近更新 更多