You are on page 1of 7

Filtro en un Formulario VBA

Excel
Otra vez,
Estoy en la parte de filtrar informacin de la base de datos... Les cuento un poco como
funciona el programita que estoy haciendo para que entiendan por que quiero filtrar de esta
forma. Los usuarios que usen el programa no pueden ver las hojas de Excel ya que al ejecutar
Excel, el Workbook se esconde y solo se ven los formularios, nadie mas que yo puede ver el
workbook, a menos que sepa la contrasea de Administrador.
Por esa razn es que quiero agregar un filtro en uno de los formulario y que me muestre los
resultados en ese mismo formulario a travs de un ListBox o incluso en un MsgBox si es
posible. Pero no tengo ni la mas mnima idea de que cdigo usar.
Les dejo unas imgenes de lo que tengo, una es de la base de datos y la otra es del formulario
como me gustara que quedara.
Base de
datos:

(esto por si no se
ve):

o
esta:

Formulario:

(si ese link no sirve prueben


este):

este:

Bueno si se fijan en la base de datos hay una columna que tiene numero de Agencia y en el
formulario se va a filtrar por el numero de agencia, use el ejemplo de la agencia 124, lo que
quiero es que al seleccionar 124 en el Combo Box y presionar el botn Search Now se
muestren todas las lineas que contienen 124 en el ListBox de la derecha.
PD: Si es posible tambin filtrar por la fecha, la que dice Outbound, a travs de un textbox
donde se escribira
Seguir Responder Ms info
Compartir

1 respuesta
Respuesta de Dante Amor
1

Dante Amor, Se fue un gran Padre. Te amo Pap!


Lo reviso y con gusto te respondo.
Saludos. Dam
el 6 nov. 12

Pon el siguiente cdigo en tu formulario

Revisa y cambia en el cdigo lo siguiente:


1. El nombre de tu hoja, en el ejemplo yo le puse "base"
2. Las columnas de datos, en el ejemplo yo le puse de A1 a D1 (4 columnas: outbound,
inbound, agency, members)
3. Si son ms de 4 columnas tienes que cambiar
ListBox1.ColumnCount = 4
4. Y agregar, ms lneas
.List(.ListCount - 1, 3) = cell.Offset(0, 3).Value
5. Tienes que crear un textbox1 para capturar la fecha
6. Tienes que verificar que lo que capturan en el textbox1 sea una fecha (no se incluye en esta
macro)
Private Sub CommandButton1_Click()
'Por Dam
Dim cell As Range
Dim Rng As Range
agencia = ComboBox1
fecha = TextBox1
ActiveSheet.AutoFilterMode = False
Range("A1:D1").Select
If agencia = "" Then
If fecha = "" Then
MsgBox "No hay datos a filtrar, se seleccionan todos"
ComboBox1.SetFocus
Else
'Filtra datos por fecha
ActiveSheet.AutoFilterMode = False
Range("A1:D1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=fecha
End If
Else
If fecha = "" Then

'Filtra datos por agencia


ActiveSheet.AutoFilterMode = False
Range("A1:D1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:=agencia
Else
'filtra datos por agencia y fecha
ActiveSheet.AutoFilterMode = False
Range("A1:D1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=fecha
Selection.AutoFilter Field:=3, Criteria1:=agencia
End If
End If
ufila = Range("A" & Rows.Count).End(xlUp).Row
If ufila = 1 Then
MsgBox "No se encontraron datos a filtrar"
ListBox1.Clear
Else
'Prepara el rango de datos filtraso
With ThisWorkbook.Worksheets("base")
'Set Rng = .Range("A1", .Range("A1").End(xlDown)).SpecialCells(xlCellTypeVisible)
Set Rng = .Range("A1", .Range("A" &
Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
End With
'Prepara y llena el listobox
ListBox1.ColumnCount = 4
ListBox1.Clear
For Each cell In Rng.Cells
With Me.ListBox1
.AddItem cell.Value
.List(.ListCount - 1, 1) = cell.Offset(0, 1).Value
.List(.ListCount - 1, 2) = cell.Offset(0, 2).Value

.List(.ListCount - 1, 3) = cell.Offset(0, 3).Value


End With
Next cell
fecha = ""
agencia = ""
End If
End Sub

Saludos.dam
Si es lo que necesitas.
el 7 nov. 12

Mejor imposible, esta perfecto no se interpretar ese cdigo tan grande pero lo copie y lo pegue
y funciono a la perfeccin jajaja solo tuve que cambiar el nombre de la hoja como me dijiste
arriba
Gracias, eres un Dios
Ya se donde buscar ayuda siempre, nunca fallas wow
Saludos

You might also like