Musisz albo zmienić wartość iteratora (zwiększyć ilość przejść pętli), albo automatycznie ustalić długość tekstu, dzięki czemu makro będzie działało dla "dowolnej" liczby znaków.
Jest funkcja Len(), do której jako argument podajesz string (lub zaznaczenie), a ta zwraca długość tego stringu. Możesz to wykorzystać w taki sposób:
Dim sText as String, nCount as Integer
sText = "jakiś ciąg znaków"
nCount = Len(sText) ' Tutaj do nCount zostanie przypisana długość sText, dzięki czemu pętla wykona się tyle razy, ile jest znaków w tekście.
For i = 0 To nCount
' instrukcje
Next i
W środku pętli umieszczasz instrukcje, które będą kolorować co czwarty znak.
Jeśli chcesz kolorować co czwarty wyraz, to musisz wykryć, gdzie się ten wyraz zaczyna i gdzie kończy. Przykładowo (albo może to już rozwiązany problem - nie weryfikuję), jeżeli pomiędzy jakimś ciągiem są dwie spacje lub na początku jest spacja, a na końcu znak interpunkcyjny, to jest to jeden wyraz.