A ver que te parece esto.
Tiene el problema del parpadeo, sobre todo porque la sub que colorea el texto es bastante lenta, pero el resultado de momento es el buscado.
Me he limitado a 5 colores, pero verás que es facil añadir mas.
RT1 es el RichTextBox
Código :
Ver originalOption Explicit
Dim Colores(5) As ColorConstants
Private Sub Form_Load()
Colores(0) = vbBlack
Colores(1) = vbBlue
Colores(2) = vbRed
Colores(3) = vbGreen
Colores(4) = vbMagenta
Colores(5) = vbYellow
Me.Show
End Sub
Private Sub RT1_Change()
Dim Pos As Long
With RT1
.Visible = False
Pos = .SelStart
CambiaColores RT1
.SelStart = Pos
.Visible = True
.SetFocus
End With
End Sub
Sub CambiaColores(RTB As RichTextBox)
Dim F As Long
Dim Contador As Long
With RTB
For F = 1 To Len(.Text)
If Mid$(.Text, F, 1) = "{" Then
Contador = Contador + 1
If Contador > 5 Then Contador = 5
.SelStart = F - 1
.SelLength = 1
.SelColor = Colores(Contador)
ElseIf Mid$(.Text, F, 1) = "}" Then
.SelStart = F - 1
.SelLength = 1
.SelColor = Colores(Contador)
Contador = Contador - 1
If Contador < 0 Then Contador = 0
Else
.SelStart = F - 1
.SelLength = 1
.SelColor = Colores(Contador)
End If
Next F
End With
End Sub
Saludos