Les muestro el código que hace posible filtrar datos en donde el criterio de búsqueda a evaluar sea un campo o columna especifica seleccionada por el usuario a traves de un ComboBox segun el framento o palabra completa capturada por el usuario en el TextBox1 del evento Change.
- Crear una hoja con datos.
- Ingresar al editor VBA excel.
- Insertar un formulario con los componentes:
- Etiqueta (Label1)
- Caja de texto (TextBox1)
- Cuadro de lista (ListBox1)
- Escribir el siguiente código.
Private Sub UserForm_Initialize()
Me.ComboBox1.AddItem "ID"
Me.ComboBox1.AddItem "NOMBRE"
Me.ComboBox1.AddItem "FECHA"
Me.ComboBox1.AddItem "SEXO"
Me.ComboBox1.AddItem "DIRECCION"
Me.ComboBox1.AddItem "TELEFONO"
Me.ComboBox1.AddItem "CORREO"
End Sub
Private Sub TextBox1_Change()
Dim intregistros, i As Integer
Dim intfila As Integer
'Definimos el número de columnas
Me.ListBox1.ColumnCount = 7
'Definimos el ancho de cada columna
Me.ListBox1.ColumnWidths = "30;160;80;80;80;80;80"
'Limpiar el lixtbox
ListBox1.Clear
'Agregar el elemento en las respectivas columnas
ListBox1.AddItem
intfila = ListBox1.ListCount - 1
ListBox1.Column(0, intfila) = "ID"
ListBox1.Column(1, intfila) = "NOMBRE"
ListBox1.Column(2, intfila) = "FEC_NAC"
ListBox1.Column(3, intfila) = "SEXO"
ListBox1.Column(4, intfila) = "DIRECCION"
ListBox1.Column(5, intfila) = "TELEFONO"
ListBox1.Column(6, intfila) = "CORREO"
'Seleccionamos el campo a buscar
intcampo = Me.ComboBox1.ListIndex + 1
'Contamos el numero de registros en la hoja 1
intregistros = Hoja1.Range("A1").CurrentRegion.Rows.Count
'Recorre todos los registros a partir de la fila 2 de la hoja1
For i = 2 To intregistros
'Si contiene alguna cadena de la columna seleccionada que coincida con TextBox1
If InStr(Hoja1.Cells(i, intcampo), Me.TextBox1.Value) Then
'Carga a la lista el registro de la hoja 1
ListBox1.AddItem Hoja1.Cells(i, 1)
ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Hoja1.Cells(i, 2)
ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Hoja1.Cells(i, 3)
ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Hoja1.Cells(i, 4)
ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Hoja1.Cells(i, 5)
ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Hoja1.Cells(i, 6)
ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Hoja1.Cells(i, 7)
End If
Next i
End Sub
Filtrar genero femenino según el campo sexo de la hoja1
Hoja 1 con Datos
No hay comentarios.:
Publicar un comentario