Una posibilidad mas y diferente.
Código vb:
Ver originalPrivate Sub RichTextBox1_KeyPress(KeyAscii As Integer)
Static ColorNegro As Boolean
If ColorNegro Then
' Si recibió un caracter de Cierre, activa antes color Negro
RichTextBox1.SelColor = vbBlack
ColorNegro = False
End If
Select Case Chr$(KeyAscii)
Case Is = "[": RichTextBox1.SelColor = vbBlue
Case Is = "(": RichTextBox1.SelColor = vbRed
Case Is = "{": RichTextBox1.SelColor = vbGreen
Case Is = "<": RichTextBox1.SelColor = vbMagenta
Case Is = "¿": RichTextBox1.SelColor = vbCyan
Case Is = "]", ")", "}", ">", "?"
ColorNegro = True
' Cambiará color justo antes de la próxima pulsacion
End Select
End Sub
Solo necesitas un RichTextBox para probarlo