Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Mostrar filtros en la barra de estado

| 2 comentarios

A continuación presentaré la programación para que en la barra de estado aparezcan los filtros que podemos tener activos a la hora de estar buscando algún dato en particular. Esta macros nos puede ser de ayuda si se trabaja con una base de datos con varias variables, y esta macro a la hora de que estamos realizando nuestra búsqueda nos dice que filtros tenemos activos, envés de estar buscando columna por columna.

Inicialmente, la barra de estado a la hora de hacer un filtro solo nos indica cuantos caracteres han sido seleccionados, pero no nos dice el tipo de variable. Para ello, he creado una pequeña tabla con datos aleatorios. La cual se puede apreciar a continuación:

tabla6
(Para mayor visualización de la imagen, hacer click en la misma)

Como se puede observar hay algunos campos repetidos, especialmente es más visible en las variables "REGIÓN" y "PRODUCTO".

A continuación, comenzaré a explicar la programación, para que los 4 campos salgan en la barra de estado.

Definimos el nombre de la macro y las variables a utilizar:

Sub mostrarfiltros()
Dim AF As AutoFilter
Dim filtro As Filter
Dim campo As String
Dim j As String
Dim i As Integer

En las siguientes lineas, estamos indicando que si la hoja activa no tienen ningún filtro activo, entonces la macros no se ejecutará, es necesario que existan filtros en la hoja que se planee utilizar dicha macro.

If ActiveSheet.AutoFilterMode = False Then
Application.StatusBar = False
Exit Sub
End If

Como en nuestra hoja, ya tiene filtros la macros se ejecutará de todas formas, luego le indicamos al Excel, que para todos los filtros activos los tome en cuenta, y como usualmente los encabezado están en la primera fila, por eso se indica que la variable "i" tome valores desde el 1 hasta que se acaben los encabezados. Luego definimos a la variable campo, la cual abarcará a todos los datos disponibles.

Set AF = ActiveSheet.AutoFilter
For i = 1 To AF.Filters.Count
campo = AF.Range.Cells(1, i).Value

Luego nuestra variable "filtro" va a tomar a todos los filtros activos, por lo que estamos diciendo que cuando un filtro este activo, que tome a dicho filtro. Y se pone el "On error goto" para evitar que aparezcan errores en el caso que se active más de un filtro en la hoja.
Set filtro = AF.Filters(i)
If filtro.On Then
On Error GoTo CriteriaOverflow
j = j & " " & campo & filtro.Criteria1
End If
Next

Ahora procederé a que todas las condiciones definidas arriba aparezcan en la barra de estado. Por lo que, decimos que la barra de estado debe mostrar a "j" cuando se active un filtro.

If j = "" Then
Application.StatusBar = False
Else
Application.StatusBar = j
End If
Exit Sub

Y se vuelve a poner el critero de desbordamiento, para el caso que activemos más de un filtro al mismo tiempo, para que nos aparezcan ambos campos en las barras de estado.

CriteriaOverflow:
j = j & " " & campo & "= Multiple Filters"
ErrorHandler: Resume Next

End Sub

Guardamos la macro, y luego abrimos el "workbook" y escribimos el siguiente código para poder ejecutar a la macro.

formula5
(Para mayor visualización de la imagen, hacer click en la misma)

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Call mostrarfiltros
End Sub

Ponemos la opción "call" para que ejecute la macros que se ha estado creando. Guardamos todo, y ejecutamos la macro. Se sugiere escribir una función en cualquier celda que este inutilizada, en mi caso usé la función "=ahora()" para que cada vez que cambiemos el filtro, la macros se ejecute. Por ejemplo, en la tabla de abajo se puede apreciar, que seleccione LIMA en el campo REGIÓN y Producto 4 en el campo PRODUCTO. Si observar en la esquina inferior izquierda, en la barra de estado aparecen los campos que tienen un filtro, con el respectivo filtro activado.

Mostrar filtros barra de estado
(Para mayor visualización de la imagen, hacer click en la misma)

 

Adjunto el archivo, por si el lector desea probar otros filtros o agregar más campos: MostrarFiltros

 

2 comentarios

  1. Estimados, esta buenísima la solución. Solo que tengo una necesidad y veo que esta macro no la contempla. Básicamente es cuando para una misma columna selecciono mas de una opción de filtro, en la barra de estado solo se muestra una de las opciones elegidas.

    Se podría solucionar esta casuística?
    Saludos
    Marcelo B

  2. Hola, tengo un nombre que siempre aparece en lado izquierdo de la barra de estado y quiero retirarlo o cambiarlo por el nombre de la empresa. quisiera saber como hacer eso. gracias

Deja una respuesta

Los campos requeridos estan marcados con *.