Richedit colors

Hi i want to be able to insert text lines into a richeditbox from my code, the special thing: i want to put colors in it. with some kind of color codes.

eg: me.editbox.addline "@RED@this is red@BLUE@this is blue"

Can anyone help me ?

Best regards,
Who is Participating?
deightonConnect With a Mentor Commented:

Private Sub Command1_Click()
    Dim sfStr As String
    sfStr = "@GREEN@Argentina@RED@England@GREEN@Brazil"
    Call AddText(RichTextBox1, sfStr)
End Sub

Sub I have written - I had a lot of problems getting things to work!

Sub AddText(rtb As RichTextBox, sfStr As String)

    'Fills a text box with coloured text

    Dim c As Integer
    Dim idColor As Long
    Dim sColor As String
    Dim a(500) As Long
    Dim i As Integer
    idColor = vbBlack
    c = 1
    Do Until c > Len(sfStr)
        'Get the color code
        If Mid(sfStr, c, 1) = "@" Then
            c = c + 1
            sColor = ""
            Do Until c > Len(sfStr) Or Mid(sfStr, c, 1) = "@"
                sColor = sColor + Mid(sfStr, c, 1)
                c = c + 1
            'Add all your colors here with their codes by adding more if statements
            'You might want to use CASE statement here
            If sColor = "RED" Then
                idColor = vbRed
            ElseIf sColor = "BLUE" Then
                idColor = vbBlue
            ElseIf sColor = "GREEN" Then
                idColor = vbGreen
            End If
            rtb.Text = rtb.Text + Mid(sfStr, c, 1)
            i = i + 1
            a(i) = idColor

        End If

        c = c + 1
    'Set the colors - This is the only way I couold find that actually worked
    For c = 1 To i
        rtb.SelStart = (c - 1)
        rtb.SelLength = 1
        rtb.SelColor = a(c)
End Sub

You could use seltext and selcolor and selstart like so,

With RichTextBox1
    .Text = "First line in standard" & Chr(10)
    'get insert position
    .SelStart = Len(.Text)
    'set the new color
    .SelColor = vbRed
    'insert the line
    .SelText = "new line in red" & Chr(10)
    'find the end of 1st line
     .SelStart = Len(.Text)
    .SelColor = vbBlack
    .seltext = "I'm back to black"
End With

This can be a little limiting, but is quick and easy,Or you could edit the RTF code itself to insert a line in red, but this is not as simple as the method above. If you would rather the RTF answer, reject the one above and i'll dig out that that code.
aluikenAuthor Commented:
Hi, yes i think that the rtf sollution would be much faster and stable, if you dig out the code could you also think about the other color tags for me ? that is the problem where i am stuck at. (my own color codes @RED@ or somthing line that), Because i want to write a sub that adds a line to an richedit.

Thx !
aluikenAuthor Commented:
Perfect THX !
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.