
Filtrar ListBox de un Userform por un parámetro.
Publicado por Rafael (102 intervenciones) el 04/06/2024 10:15:49
En el ListBox1 del UserForm que he llamado "INGRESOS", presento, definidos por 19 columnas, los Ingresos Hospitalarios que están recogidos en la Hoja del mismo libro también llamada "INGRESOS".
En el mismo Userform, encima del ListBox he dispuesto un Combo llamado "Paciente", y contiguo a él un botón de comando en el que Al Hacer Clic sobre él pretendo se filtren los Ingresos presentados en el ListBox, relativos ÚNICAMENTE al paciente que he podido seleccionar en el Combo aludido.
He tratado de 'reacomodar' el sistema de filtrado que me funciona correctamente en otro .xlsm en el que filtro hasta por 7 parámetros, pero sin éxito.
El código que he pretendido reacomodar es este:
En el mismo Userform, encima del ListBox he dispuesto un Combo llamado "Paciente", y contiguo a él un botón de comando en el que Al Hacer Clic sobre él pretendo se filtren los Ingresos presentados en el ListBox, relativos ÚNICAMENTE al paciente que he podido seleccionar en el Combo aludido.
He tratado de 'reacomodar' el sistema de filtrado que me funciona correctamente en otro .xlsm en el que filtro hasta por 7 parámetros, pero sin éxito.
El código que he pretendido reacomodar es este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Dim HojaBase As Worksheet
Dim Rango As Range
Dim Columna As Integer
Dim I As Integer
Dim Filas As Integer
Dim Filtro_1 As Boolean
On Error GoTo ControladorDeErrores
Set HojaBase = ThisWorkbook.Sheets("INGRESOS")
Set Rango = HojaBase.Range("A1").CurrentRegion
Me.ListBox1.Clear
Filas = Rango.Rows.Count
For I = 2 To Filas
With Me.ListBox1
' ---&--- Filtro el Paciente:
'''''''If UCase(Paciente) = UCase(HojaBase.Cells(I, 2).Value) Or UCase(Paciente) = UCase("Admin") Then
Filtro_1 = IIf(Paciente.Value = Empty, True, VBA.LCase(HojaBase.Cells(I, 2).Value) Like "*" & VBA.LCase(Me.Paciente.Value) & "*")
If Filtro_1 Then
.AddItem HojaBase.Cells(I, 2).Value
''''''''.List(Me.ListBox1.ListCount - 1, 1) = Format(HojaBase.Cells(I, 2).Value, "dd/mm/yyyy")
End If
'''''''End If
End With
''''Me.ListBox1.SetFocus
Next I
'''''Me.Registros.Value = Me.ListBox1.ListCount
Exit Sub
ControladorDeErrores:
MsgBox "Ha ocurrido un error: " & Err.Description, vbExclamation, "MiAplicaciónj"
Valora esta pregunta


0