El contenido de este post contiene una estructura bastante fácil que tiene la función de buscar cadenas de texto coincidentes dentro de alguna otra cadena de texto. Es algo así como un buscador. No maneja comodines como "*" o "?", pero sirve en muchas ocasiones.
En este ejemplo voy a utilizar un cuadro de texto (TextBox1) para ingresar la cadena que quiero buscar, y donde la estructura va a buscar va ser en una matriz (ficha.buscar)
La estructura la hicimos un amigo y yo. Y es muy eficaz.
Private Sub Text1_Change()
'La variable cc toma el valor del largo del TextBox1
cc = Len(Text1.Text)
'Limpiamos el List1 que es donde se van a mostrar los resultados.
List1.Clear
'Iniciamos un For para recorrer la matriz, teniendo en cuenta que ficha.var es un entero que tiene
'el valor del largo de la matriz
For i = 1 To ficha.var
'La variable rc toma el largo del atributo nom de la matriz ficha.buscar
rc = Len(ficha.buscar(i).nom)
'Iniciamos un For que va recorrer la cadena de texto tomada de la matriz donde la variable
'a cambia hasta tomar el valor de la variable rc
For a = 1 To rc
'La variable tr toma una cantidad "a" de caracteres por la derecha de un lugar de la matriz epecífico por el
'For
tr = Right(ficha.buscar(i).nom, a)
'Declaramos un IF que va comparar el texto del TextBox1 con una cantidad de caracteres "cc" tomados
'de la cadena de texto tr, y si son iguales entonces el resultado lo mostramos en un listBox
If UCase(Text1.Text) = UCase(Left(tr, cc)) Then
'Aquí ingresamos las sentencias que queremos que se ejecuten si los resultados fueron encontrados
'Pueden ser, mostrar los resultados en un ListBox o simplemente hacer un conteo de los
'resultados encontrados, todo depende de la destreza del programador.
List1.AddItem ficha.buscar(i).nom
End If
Next
Next
'Declaramos un IF que va informar si no se encontraron resultados.
If List1.ListCount = 0 Then List1.AddItem "No se encontraron resultados en la matriz para" & Chr(34) & Text1.Text & Chr(34) & "."
'Y por último declaramos un IF el cual limpiara el ListBox si el TextBox está limpio.
If Text1 = "" Then List1.Clear
End Sub
Esta estructura está hecha en Visual Basic 6.0, pero con mínimos cambios si el programador entiende este lenguaje, lo podrá usar en todos los Visual Basic, incluso si es un buen programador y entiende la lógica lo podrá usar en cualquier otro lenguaje. Es una estructura muy simple y de vez en cuando necesaria cuando el programa va manejar datos de una oficina o algo por el estilo.
Aquí la estructura sin comentarios.
Private Sub Text1_Change()
cc = Len(Text1.Text)
List1.Clear
For i = 1 To ficha.var
rc = Len(ficha.buscar(i).nom)
For a = 1 To rc
tr = Right(ficha.buscar(i).nom, a)
If UCase(Text1.Text) = UCase(Left(tr, cc)) Then
List1.AddItem ficha.buscar(i).nom
End If
Next
Next
If List1.ListCount = 0 Then List1.AddItem "No se encontraron resultados en la matriz para" & Chr(34) & Text1.Text & Chr(34) & "."
If Text1 = "" Then List1.Clear
End Sub
Espero les haya servido.

