테이블로 설정한 데이터의 필터링 유무를 알 수 있을까요?

VBA
작성자
나도_엑셀
작성일
2022-02-28 11:43
조회
116
엑셀버전 : 엑셀2019

운영체제 : 윈도우10

일반적인 오토필터의 유무를 확인하려면,
Worksheet의 매소드인 FilterMode를 사용하는 것으로 알고 있고, 그렇게 사용해 왔습니다. 하지만, 이번 프로젝트에서는 테이블을 사용해서 똑 같은 내용을 구현해야 합니다. 그러나, 테이블에서 필터링이 되었는지 확인을 할 수 있는 매소드를 모르겠습니다. 간단히 말하면, FilterMode나, ShowAllData 같은 기능을 테이블에서도 가능한지 알고 싶습니다. 가능하다면, 그 매소드도 같이 알고 싶습니다.
고수님의 답변 기다리겠습니다.

참고로, 첨부 파일은 테이블인 경우와, 테이블이 아닌 경우의 차이점을 보이려고, 임의로 작성한 샘플 파일입니다. 정상 동작하는 함수와, 에러가 나는 함수도 같이 있으니, 파일의 내용을 참고하시면, 더욱 내용을 파악하는데 도움이 될 것이라고 생각합니다. 제가 해결한 방법은 정말 꼼수 입니다.

회원등급 : 6레벨
포인트 : 394 EP
총질문 : 5 개 (마감율 : 80%)
채택답변 : 1 개
전체 7

  • 2022-02-28 16:31

    첨부파일을 열어보진 않았는데 질문 내용이 워크시트의 필터링 여부가 아니라 "테이블(표)"의 필터링 사용 여부를 찾으시는 게 맞다면 이렇게 해보세요.

    If ActiveSheet.ListObjects(1).ShowAutoFilter Then

    잘 알고 계신 내용일 수 있지만 참고로 덧붙여 보면,

    If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
    = True는 생략 가능

    If ActiveSheet.AutoFilterMode Then ActiveSheet.UsedRange.AutoFilter

    ▶ Worksheet.FilterMode 속성
    : 워크시트에서 데이터가 필터링되고 있는지 여부를 나타내는 값을 가져옵니다.

    ▶ Worksheet.AutoFilterMode 속성
    : 워크시트에서 필터링이 현재 사용되는지(즉, 필터 드롭다운 화살표가 현재 표시되는지) 여부를 나타내는 값을 가져오거나 설정합니다.

    즉, FilterMode 는 AutoFilter가 된 상태에서 데이터가 필터링 되었으면 True값으로 나타나고
    AutoFilterMode 는 데이터가 필터가 되었음 여부를 떠나 AutoFilter가 장착되어 있으면 True값을 보내줍니다.

     


    • 2022-02-28 17:11

      @나는나 님 If ActiveSheet.ListObjects(1).ShowAutoFilter Then
      해당 소스는 조건(필터링(화살표))을 만족해도, 그냥 넘어가네요.
      안되는 것 같습니다.


  • 2022-02-28 14:05

    아래와 같이 수정후 정상 동작하네요.

    'Table
    Sub chkFilterStatus2()
        Dim ws As Worksheet
        
        Set ws = Worksheets("sheet1")
        
        With ws.ListObjects("dataTable")
            If isCheck3 = False Then
                .Range.AutoFilter .ListColumns("Position").Index, "Manager"
                isCheck3 = True
            Else
                .Range.AutoFilter .ListColumns("Position").Index
                isCheck3 = False
            End If
        End With
    End Sub

     


    • 2022-02-28 16:10

      @수이니 님 답변 감사합니다.
      저도 같은 방법을 생각해보았습니다.
      하지만, 저렇게 하면, Position 인덱스에 대해서만, 필터가 해제가 됩니다.
      제가 원하는 모든 인덱스에 대해서, 필터링이 해제되는 것은 어렵습니다. 만약에 하려고 한다면, 모든 인덱스에 위와 같은 명령어를 넣어야 하겠지요. 제가 필요한 것은 ShowAllData와 같이 모든 인덱스에 대해서, 필터가 해제되기를 원합니다. 그래서, 꼼수 같은 것을 쓴 것입니다. 꼼수는 단 두 줄이면 해결이 됩니다.


      • 2022-02-28 16:29
        채택된 답변

        @나도_엑셀

        'Table
        Sub chkFilterStatus2()
            Dim ws As Worksheet
            
            Set ws = Worksheets("sheet1")
            
            With ws.ListObjects("dataTable")
                If isCheck3 = False Then
                    .Range.AutoFilter .ListColumns("Position").Index, "Manager"
                    isCheck3 = True
                Else
                    Range("dataTable").Activate
                    ActiveSheet.ShowAllData
                    isCheck3 = False
                End If
            End With
        End Sub

        위 코드를 활용해보세요.


        • 2022-02-28 17:05

          @수이니 님 답변 감사합니다.
          적어주신 소스를 사용해서, 실행하니 잘 됩니다.
          ( 시행착오를 거치니, 테이블을 다시 엑티베이트 시키는 것이 중요한 것이었습니다. 셀 선택을 테이블 범위로 하면, ShowAllData 매소드가 기동하는 것 같습니다. )
          좋은 것을 배웠습니다. 정말 감사드립니다.
          복 받으실 거예요. ^^


  • 2022-02-28 17:25

    필터링 여부 문제는 자력으로 해결했습니다.
    시트에 대해서, 리스트 오브젝트의 값을 찾아보니, .AutoFilter.FilterMode 가 있어서, 소스에 적용해 보니, 원하는 대로 움직여 줍니다.
    지금까지 답변 주신 분들 다시 한번 감사드립니다.

    소스를 적어 둡니다.

    Sub chkFilterStatus5()
        Dim ws As Worksheet
        
        Set ws = Worksheets("sheet1")
        
        With ws.ListObjects("dataTable")
            If .AutoFilter.FilterMode Then
                Debug.Print "True"
            Else: Debug.Print "False"
            End If
        End With
    End Sub
    

전체 6,488
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[🏆 진짜쓰는 실무엑셀 스터디] 1기 - 우수 졸업생 및 후기, 축하합니다! (8)
오빠두엑셀 | 2022.04.30 | 추천 10 | 조회 1278
오빠두엑셀 2022.04.30 10 1278
공지사항 함수/공식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (65)
오빠두엑셀 | 2021.10.28 | 추천 81 | 조회 4592
오빠두엑셀 2021.10.28 81 4592
34477 문서서식
New 수식 복사 질문드려요.. ㅠㅠ 불금 퇴근하고싶습니다... 첨부파일 (3) 답변완료
김동률 | 2022.05.27 | 추천 0 | 조회 27
김동률 2022.05.27 0 27
34473 VBA
New 비고란에서 휴대폰번호 추출하기에 관해 문의드립니다. 첨부파일 (1)
수메리안 | 2022.05.27 | 추천 0 | 조회 26
수메리안 2022.05.27 0 26
34472 기능/도구
New 스핀단추에서 증분변경시 0.1 씩 증감할려면 어떻게 해야 할까요? (1)
033cola | 2022.05.27 | 추천 0 | 조회 24
033cola 2022.05.27 0 24
34471 함수/공식
New 조건부서식 중복 2개이상 및 2개일때 서식좀 봐주세요 궁금합니다. 첨부파일 (2)
김주현 | 2022.05.27 | 추천 0 | 조회 31
김주현 2022.05.27 0 31
34469 문서서식
New 표의 행렬 변경 첨부파일 (3)
김학준 | 2022.05.27 | 추천 0 | 조회 28
김학준 2022.05.27 0 28
34465 차트/그래프
New 간트차트에 오늘 표시하는 방법 질문드려요
yoyoy**** | 2022.05.27 | 추천 0 | 조회 27
yoyoy**** 2022.05.27 0 27
34464 VBA
New Vba로 수식을 입력하려는데 오류가 납니다. (1)
silverf**** | 2022.05.27 | 추천 0 | 조회 29
silverf**** 2022.05.27 0 29
34451 함수/공식
New 제품별 코드 중복/단독 확인함수 첨부파일 (2)
다은지후아빠 | 2022.05.27 | 추천 -1 | 조회 46
다은지후아빠 2022.05.27 -1 46
34450 VBA
New VBA를 활용한 최단거리 계산(Pathfinder,카카오맵) 첨부파일
darc**** | 2022.05.27 | 추천 0 | 조회 33
darc**** 2022.05.27 0 33
34448 함수/공식
New countif 다양한 조건으로 만들고 싶어요~ 첨부파일 (2) 답변완료
김수달 | 2022.05.27 | 추천 0 | 조회 44
김수달 2022.05.27 0 44
34444 기능/도구
New 엑셀 빠른 도구 모음에 있는 '조명'이 무슨 기능인지 아시는분 계신가요?
월마리아 | 2022.05.26 | 추천 0 | 조회 43
월마리아 2022.05.26 0 43
34440 함수/공식
New 고객 리텐션, 접속 일수에 맞춰 데이터를 합산하는 함수/VBA 문의! 첨부파일
은혼 | 2022.05.26 | 추천 0 | 조회 21
은혼 2022.05.26 0 21
34439 차트/그래프
New 체크박스 선택에 따라 값이 바뀌는 차트의 데이터레이블 표시 문제 관련 첨부파일
Qwerty | 2022.05.26 | 추천 0 | 조회 24
Qwerty 2022.05.26 0 24
34437 함수/공식
New 국가만 찾아 올련면 첨부파일 (4) 답변완료
구름나그네 | 2022.05.26 | 추천 0 | 조회 40
구름나그네 2022.05.26 0 40
34433 함수/공식
New 함수관련 질문있습니다.
섭섭섭 | 2022.05.26 | 추천 0 | 조회 31
섭섭섭 2022.05.26 0 31
34427 함수/공식
New 특정 공휴일 제외 후 2달 뒤 날짜를 구할수 있는 함수 식이 있을까요? (1)
김태우 | 2022.05.26 | 추천 0 | 조회 42
김태우 2022.05.26 0 42
34417 피벗테이블
New 피벗테이블 외부 데이터 참조 후 새로고침 할 때 자꾸 암호를 입력하라고 떠요.. (2) 답변완료
forest choi | 2022.05.26 | 추천 0 | 조회 35
forest choi 2022.05.26 0 35
34416 함수/공식
New 날짜/시간 차이를 구하려면 어떻게 하면 좋을까요? 첨부파일 (2)
aron007 | 2022.05.26 | 추천 0 | 조회 41
aron007 2022.05.26 0 41
34415 VBA
New VBA코드로 자동채우기 할때 유동범위는 어떻게 하나요 첨부파일 (2)
nam**** | 2022.05.26 | 추천 1 | 조회 39
nam**** 2022.05.26 1 39
34414 함수/공식
New 금지어 삭제하는 함수 (특정텍스트 범위내의 값을 제거 후 값 불러오기) 첨부파일 (1)
Jasper | 2022.05.26 | 추천 0 | 조회 42
Jasper 2022.05.26 0 42
34406 함수/공식
New sum 함수 오류? 첨부파일 (1)
saechang | 2022.05.25 | 추천 0 | 조회 52
saechang 2022.05.25 0 52
34405 VBA
New 중복데이터가 많은데 맨 위에 있는 행의 데이터만 남길 수 있는 방법이 있을까요? 첨부파일 (3) 답변완료
오구 | 2022.05.25 | 추천 0 | 조회 66
오구 2022.05.25 0 66
34402 VBA
New vba 특정문자 입력시 현재시간 구동 관련 첨부파일 (2)
1412 | 2022.05.25 | 추천 0 | 조회 46
1412 2022.05.25 0 46
34400 함수/공식
New 다른 셀 값 참조시 결과값이 0으로만 나오는 현상 문의 첨부파일 (3) 답변완료
forest choi | 2022.05.25 | 추천 0 | 조회 46
forest choi 2022.05.25 0 46
34395 VBA
New 조건이 맞을 경우 범위데이터 이동 or 복사,삭제 문의 첨부파일 (2) 답변완료
com**** | 2022.05.25 | 추천 0 | 조회 54
com**** 2022.05.25 0 54
34392 함수/공식
New 다른 파일을 참조하여 합계를 구하는데, 그 참조 파일의 이름이 바뀐다면? (1)
풀빵이네 | 2022.05.25 | 추천 0 | 조회 35
풀빵이네 2022.05.25 0 35
34391 기능/도구
New F1 키 누르면 나오는 도움말 끄는 단축키는 없나요? (5)
우렁각시탈 | 2022.05.25 | 추천 0 | 조회 47
우렁각시탈 2022.05.25 0 47
34390 함수/공식
New 셀이 빈 경우 텍스트조인이 실행되지 않도록 하는 방법 첨부파일 (6) 답변완료
forest choi | 2022.05.25 | 추천 0 | 조회 58
forest choi 2022.05.25 0 58
34387 VBA
New 개별공시지가조회 셀레니움 첨부파일 (5) 답변완료
나야 | 2022.05.25 | 추천 0 | 조회 45
나야 2022.05.25 0 45
34378 기능/도구
특정 글자의 데이터만 따로 분리할 수 있는 방법이 있을까요? (9) 답변완료
dfgkdflglkdf | 2022.05.25 | 추천 -1 | 조회 79
dfgkdflglkdf 2022.05.25 -1 79