Macro de Búsqueda

02/08/2007 - 20:43 por Luis | Informe spam
Qué tal??!! Amigos necesito de su ayuda de forma urgente, deseo crear
una macro que al momento de ingresar un nombre (por ej Juan Pérez de
la Cuadra) dentro de un textbox en un UserForm y presionar enter o un
botón, automáticamente busque en una hoja dentro de una columna en un
rango de filas determinado todas las coincidencias con el nombre
ingresado y me las muestre por ejemplo en un listview (Esto implica
mostrar todas las personas cuyo nombre contenga para el ejemplo: Juan,
Pérez o Cuadra, lo mejor sería no tomar en cuenta las palabras dentro
del nombre que contengan 3 caracteres o menos) Espero que sea posible
su ayuda y de antemano les agradezco infinitamente.

Muchas Gracias!!
 

Leer las respuestas

#1 David
02/08/2007 - 22:20 | Informe spam
Hola, Luis.

Como dicen aquí en mi localidad: "hoy sí te mandaste", y es que tu consulta,
además de ser específica, exigente y como quieras llamarla, está bastante
fuerte... =).

Bueno. Quemando algunas neuronas, llegué al siguiente código:

Private Sub CommandButton1_Click()
Dim x(10) As String, r As String
Dim j As Integer, i As Integer
Dim existe As Boolean

'Primero, localicemos las palabras ingresadas en el TextBox1
'Estas se registrarán en el arreglo x(..)
i = 1
r = ""
For j = 1 To Len(TextBox1.Value)
If Mid(TextBox1.Value, j, 1) = " " Then
If Len(r) > 3 Then
x(i) = r
i = i + 1
End If
r = ""
Else
r = r & Mid(TextBox1.Value, j, 1)
End If
Next j
If r <> "" Then
If Len(r) > 3 Then
x(i) = r
Else
i = i - 1
End If
Else
i = i - 1
End If
TextBox1.Value = ""

'Segundo, recorremos la columna A buscando las palabras
'Si hay coincidencia, se agregan al ListBox1
ListBox1.Clear
For fila = 2 To Range("A1").End(xlDown).Row
Application.StatusBar = Range("A1").End(xlUp).Row
existe = False
For j = 1 To i
If InStr(1, LCase(Cells(fila, 1).Value), LCase(x(j))) > 0 Then
existe = True
End If
If existe Then Exit For
Next j
If existe Then
ListBox1.AddItem Cells(fila, 1).Value
End If
Next fila

End Sub

Pruébalo ingresando un listado de nombres a partir de la celda A2 de una
hoja. Luego, dejándola activa, crea un formulario con un cuadro de texto
llamado TextBox1, un botón llamado CommandButton1, y un cuadro de lista
llamado ListBox1.

Saludos.



"Luis" escribió:

Qué tal??!! Amigos necesito de su ayuda de forma urgente, deseo crear
una macro que al momento de ingresar un nombre (por ej Juan Pérez de
la Cuadra) dentro de un textbox en un UserForm y presionar enter o un
botón, automáticamente busque en una hoja dentro de una columna en un
rango de filas determinado todas las coincidencias con el nombre
ingresado y me las muestre por ejemplo en un listview (Esto implica
mostrar todas las personas cuyo nombre contenga para el ejemplo: Juan,
Pérez o Cuadra, lo mejor sería no tomar en cuenta las palabras dentro
del nombre que contengan 3 caracteres o menos) Espero que sea posible
su ayuda y de antemano les agradezco infinitamente.

Muchas Gracias!!


Preguntas similares