Excel - Filtrar un listbox con parámetros

 
Vista:
Imágen de perfil de Jorge

Filtrar un listbox con parámetros

Publicado por Jorge (39 intervenciones) el 14/01/2022 03:43:54
Buenas noches, tengo un detalle en mi base de datos por causa de que llega un nuevo año y si no resuelvo esto para el otro año se convertira en un problema, los formularios de la base de datos requieren actualizaciones necesarias. Tratare de ser lo más breve:

Imagen1

En la imagen anexada, la imagen 1 es un formulario que uso para ver nomenclaturas de las unidades, de esta manera se cual es la siguiente numeración que corresponde a un nuevo expediente.

En la imagen 2, después de seleccionar la unidad, busco los resultados referentes y viene el problema del año nuevo.

Imagen 3: Al darme los resultados, las nomenclaturas del año 2021 (-21) se mezclan con las del año 2022 (-22) y para el 2023 (que ya sería -23) sera más confuso.

Imagen 4: Me gustaría que este formulario al seleccionar la unidad, en un cuadro de texto establezco un parámetro. Ejemplo: -21 o -22 (para filtrar solo lo que contenga en las nomenclaturas el texto -21 o -22).

Objetivo: Seleccion una unidad, si hay un parámetro que me muestre en el ListBox solo resultados que contengan esos parámetros y si no se establece un parámetro que me muestre todos los resultados de acuerdo a la unidad.

Anexo libro ejemplo de mi libro con macros original. El formulario donde yace este problemita se llama nomenclatura.

Cuenta con un pequeño formulario de acceso de usuario en construcción:

Usuario: admin
Contraseña: 1234
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Filtrar un listbox con parámetros

Publicado por Antoni Masana (2485 intervenciones) el 14/01/2022 14:59:10
La solución al problema del filtro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub btn_buscar_Click(): On Error Resume Next
    ListBox1.Clear
 
    Dim arrListOrd As Object
    Dim x, dato
 
    Set arrListOrd = CreateObject("System.Collections.ArrayList")
    With Hoja1
       For x = 2 To .UsedRange.Rows.Count
          If .Range("E" & x) = unidad And (parametro = Empty Or Right(.Range("U" & x), Len(parametro)) = parametro) Then
             If .Range("U" & x) <> "" Then
                arrListOrd.Add CStr(.Range("T" & x) & " " & .Range("U" & x))
             End If
          End If
       Next
       arrListOrd.Sort
       arrListOrd.Reverse
    End With
 
    For Each dato In arrListOrd
       ListBox1.AddItem dato
    Next
    resultado = "Se han encontrado " & ListBox1.ListCount & " registros"
End Sub

Otra forma de hacer lo mismo:

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
Private Sub btn_buscar_Click(): On Error Resume Next
    ListBox1.Clear
 
    Dim arrListOrd As Object
    Dim x, dato
 
    Set arrListOrd = CreateObject("System.Collections.ArrayList")
 
    With Hoja1
        For x = 2 To .UsedRange.Rows.Count
            If .Range("E" & x) = unidad Then
                If .Range("U" & x) <> "" Then
                    If Right(.Range("U" & x), Len(parametro)) = parametro Then
                        arrListOrd.Add CStr(.Range("T" & x) & " " & .Range("U" & x))
                    End If
                End If
            End If
        Next
 
       arrListOrd.Sort
       arrListOrd.Reverse
 
    End With
 
    For Each dato In arrListOrd
       ListBox1.AddItem dato
    Next
 
    resultado = "Se han encontrado " & ListBox1.ListCount & " registros"
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jorge

Filtrar un listbox con parámetros

Publicado por Jorge (39 intervenciones) el 14/01/2022 16:41:31
Funciona perfecto, lo habia intentado de otras maneras pero no me daba resultado.
Muchas gracias profe, siempre usted tiene buenas soluciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar