본문 바로가기
Worksheet object

Filters 개체

2023. 9. 10.

Filters object

자동 필터링된 범위의 모든 필터를 나타내는 필터 개체 컬렉션입니다.

 

AutoFilter 개체의 Filters 속성을 사용하여 Filters 컬렉션을 반환합니다.

 

Filter 개체를 하나만 반환하려면 Filters(index)를 사용합니다. 여기에서 index는 필터 제목이나 인덱스 번호입니다.

속성

Count property

컬렉션의 개체 수를 나타내는 Long 값을 반환합니다.

 

Syntax
expression.Count

 

expression : Filters 개체를 나타내는 변수입니다.

 

다음 코드는 자동필터가 적용된 범위의 열 개수를 출력합니다.

Function CountAutoFilterColumns(wsName As String) As Integer
    Dim ws As Worksheet
    Dim filters As filters

    Set ws = ThisWorkbook.Sheets(wsName)

    If Not ws.AutoFilterMode Then
        MsgBox "자동 필터 상태가 아닙니다."
        ' 0을 반환하고 종료
        Exit Function
    Else
    End If

    ' 필터 개체 가져오기
    Set filters = ws.autofilter.filters

    ' 필터 개체(열)의 수 확인 및 반환
    CountAutoFilterColumns = filters.Count

End Function

Sub CheckFilterCount()

    Dim filterCount As Integer

    ' 워크시트 이름으로 함수 호출 (여기서는 "Sales"라는 워크시트)
    filterCount = CountAutoFilterColumns("Sales")

    If filterCount > 0 Then
        MsgBox filterCount & "개의 열에 자동필터가 적용되었습니다."
    Else
        MsgBox "적용된 자동필터가 없습니다."
    End If

End Sub

Item property

컬렉션에서 단일 개체를 반환합니다.

 

Syntax

expression.Item(Index)

 

expression : Filters 개체를 나타내는 변수입니다.

 

다음 코드는 해당 열의 필터링 여부를 판단해서 메시지로 출력합니다.

Function IsFilterApplied(wsName As String, filterColumn As Integer) As Boolean
    Dim ws As Worksheet
    Dim filters As filters
    Dim specificFilter As Filter

    Set ws = ThisWorkbook.Sheets(wsName)

    If Not ws.AutoFilterMode Then
        MsgBox "자동 필터 상태가 아닙니다."
        Exit Function ' False를 반환하고 종료합니다.
    End If
    
    ' Filters 컬렉션 가져오기
    Set filters = ws.autofilter.filters
    
   ' 특정 열에 해당하는 필터 개체 가져오기
    Set specificFilter = filters.Item(filterColumn)

   ' 해당 열에 필터링 조건이 적용되었는지 확인하고 결과를 반환합니다.
   IsFilterApplied = specificFilter.On
   
End Function

Sub CheckSpecificFilter()
    
     Dim filterColumn As Integer
     
     ' 첫 번째 열에 대해 함수 호출 (워크시트 이름은 "Sales")
     filterColumn = 1
     
     If IsFilterApplied("Sales", filterColumn) Then
         MsgBox filterColumn & " 번째 열에 필터가 적용되었습니다."
     Else
         MsgBox filterColumn & " 번째 열에 필터가 적용되지 않았습니다."
     End If
     
End Sub

 

관련 글

 

AutoFilter object

Worksheet.AutoFilter 속성

Worksheet.AutoFilterMode 속성

Worksheet.FilterMode 속성

Filter 개체

AutoFilter 메서드

'Worksheet object' 카테고리의 다른 글

Worksheet.Visible 속성  (0) 2024.02.20
Filter 개체  (0) 2023.09.11
AutoFilter object  (0) 2023.09.08
Worksheet.FilterMode 속성  (0) 2023.09.08
Worksheet.AutoFilterMode 속성  (0) 2023.09.08