es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Buscar objetos de tabla en la hoja activa para eliminar el filtro automático.

Necesito encontrar la única tabla (una hoja de trabajo solo tendrá una tabla) en la hoja de trabajo activa y encontrar la primera y última columna de esa tabla y eliminar el autofiltro de esas primeras y últimas columnas.

Actualmente estoy haciendo lo siguiente: El problema es que tengo que ingresar manualmente los valores de los campos ya que el nombre de la hoja y el nombre de la tabla cambiarán.

Private Sub Worksheet_Activate()
' Seleccionar celda central
ActiveSheet.Range("$A$1").Select
' Quitar autofiltro de la primera columna en la tabla
With Range("$A$2")
    .AutoFilter Field:=1, VisibleDropDown:=False
End With
' Quitar autofiltro de la última columna en la tabla
With Range("$Q$2")
    .AutoFilter Field:=17, VisibleDropDown:=False
End With
End Sub
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para automatizar el proceso de encontrar la tabla y sus primeras y últimas columnas, puedes utilizar la propiedad ListObjects en VBA. Aquí tienes una versión actualizada del código:

    Private Sub Worksheet_Activate()
        Dim tbl As ListObject
        Set tbl = ActiveSheet.ListObjects(1) ' asumiendo que solo hay una tabla en la hoja
        Dim firstCol As Integer, lastCol As Integer
        firstCol = tbl.ListColumns(1).Index
        lastCol = tbl.ListColumns.Count
        tbl.Range.AutoFilter Field:=firstCol, VisibleDropDown:=False
        tbl.Range.AutoFilter Field:=lastCol, VisibleDropDown:=False
    End Sub
    

    Este código utiliza la colección ListObjects para encontrar la primera tabla en la hoja activa. Luego obtiene el índice de las primeras y últimas columnas en la tabla utilizando la colección ListColumns. Por último, elimina el autofiltro de esas columnas utilizando el método Range.AutoFilter.

Comments are closed.