la idea es: tener una simple cadena donde al encontar cierto caracter seguido de un numero del 0 al 7 se marque toda la cadena anterior del color asigando :
nota : ADD ES EL RichTextBox , ColorSet ES LA FUNCION PARA DETERMINAR EL COLOR DEL 0 AL 7. EL @ ES EL CARACTER que es seguido de un numero para determinar el color..
Citar
Private Function ColorSet(Datos As String)
Select Case Datos
Case "0"
ColorSet = vbBlack
Case "1"
ColorSet = vbRed
Case "2"
ColorSet = vbGreen
Case "3"
ColorSet = vbYellow
Case "4"
ColorSet = vbBlue
Case "5"
ColorSet = &HFFFF00
Case "6"
ColorSet = 16711935
Case "7"
ColorSet = vbWhite
End Select
End Function
Private Function dd(Datos As String)
Dim i, Conteo, LLeva
LLeva = 0
Conteo = 0
For i = 1 To Len(Datos)
Conteo = Conteo + 1
If Mid(Datos, i, 1) = "@" Then
LLeva = LLeva + 1
Add.Text = Add.Text & Mid(Datos, i - Conteo + 1, Conteo - 1)
Add.SelStart = i - Conteo - LLeva + 1
Add.SelLength = Conteo - 1
Add.SelColor = ColorSet(Mid(Datos, i + 1, 1))
conteo = "0"
Else
End If
Next i
End Function
Select Case Datos
Case "0"
ColorSet = vbBlack
Case "1"
ColorSet = vbRed
Case "2"
ColorSet = vbGreen
Case "3"
ColorSet = vbYellow
Case "4"
ColorSet = vbBlue
Case "5"
ColorSet = &HFFFF00
Case "6"
ColorSet = 16711935
Case "7"
ColorSet = vbWhite
End Select
End Function
Private Function dd(Datos As String)
Dim i, Conteo, LLeva
LLeva = 0
Conteo = 0
For i = 1 To Len(Datos)
Conteo = Conteo + 1
If Mid(Datos, i, 1) = "@" Then
LLeva = LLeva + 1
Add.Text = Add.Text & Mid(Datos, i - Conteo + 1, Conteo - 1)
Add.SelStart = i - Conteo - LLeva + 1
Add.SelLength = Conteo - 1
Add.SelColor = ColorSet(Mid(Datos, i + 1, 1))
conteo = "0"
Else
End If
Next i
End Function
El problema: no marca a las cadenas , marca solo 2 cadenas ejmplo:_
Call dd("hola@3como@2andas@1")
solo va a marcar 2 colores no 3. y quedaria asi. holacomoandas
y tendria que quedar asi : holacomoandas
podrian ayudarme ....