KB de Microsoft. Article ID: Q154884
En muchas aplicaciones existe una función para buscar y destacar palabras en un texto. Podemos obtener esta funcionalidad mediante el control RichTextBox, como muestra el siguiente ejemplo.
Private Function HighlightWords(rtb As RichTextBox, _
sFindString As String, _
lColor As Long) _
As Integer
Dim lFoundPos As Long 'Posicion del primer carácter que coincide
Dim lFindLength As Long 'Longitud del string a buscar
Dim lOriginalSelStart As Long
Dim lOriginalSelLength As Long
Dim iMatchCount As Integer 'Número de veces que se encontró
'Guardamos la posición del punto de inserción y la longitud del text seleccionado
lOriginalSelStart = rtb.SelStart
lOriginalSelLength = rtb.SelLength
'Guardamos la longitud del texto a buscar
lFindLength = Len(sFindString)
'Buscamos la primera ocurrencia
lFoundPos = rtb.Find(sFindString, 0, , rtfNoHighlight)
While lFoundPos > 0
iMatchCount = iMatchCount + 1
rtb.SelStart = lFoundPos
'La propiedad SelLength se pone a 0 al cambiar SelStart
rtb.SelLength = lFindLength
rtb.SelColor = lColor
'Buscamos la siguiente ocurrencia
lFoundPos = rtb.Find(sFindString, _
lFoundPos + lFindLength, , rtfNoHighlight)
Wend
'Reponemos la posición y longitud del punto de insercción
rtb.SelStart = lOriginalSelStart
rtb.SelLength = lOriginalSelLength
'Devolvemos el número de ocurrencias encontradas
HighlightWords = iMatchCount
End Function
Y para buscar un texto y señalarlo, por ejemplo en rojo, simplemente :
HighlightWords RichTextBox1, "TextoBuscado", vbRed