2012-12-20 9 views
0

테이블 상단에는 일련의 필터가 있습니다 (평소와 같이).이 테이블은 여러 개의 데이터 시리즈가있는 방대한 그래프를 제공합니다. 다른 일련의 데이터를 숨기려면 표의 정보를 그룹화해야합니다. 그런 다음 마이너스 버튼을 클릭하여 그룹을 접어 그래프에서 일련의 데이터를 제거하거나 더하기 버튼을 클릭하여 같은 방식으로 다시 추가 할 수 있습니다. 예, 알고 있습니다. 최선의 해결책은 아닙니다. 그것은 초기의 노력이었다, 내가 무엇을 말할 수 있냐? 기본적으로 모든 데이터가 숨겨져 있습니다 (모든 그룹이 축소되었습니다).테이블 필터 활성화 수신 수신

필자는 찾고있는 특정 시리즈를 찾기 위해 필터를 맨 위에 사용할 수있는 사용자 (매우 중요한 사용자)가 있습니다. 필터는 접힌 시리즈가 잘 발견되지만 시리즈는 축소되어 표시되지 않습니다.

그래서 필터를 활성화하면 모든 그룹이 자동 확장됩니다. 이것은 단순히 차트를 다시 디자인 할 수있을 때까지 스톱 갭 측정 값으로 작동해야합니다.

문제점 : 필터를 클릭하거나 다른 방법으로 사용하면 Excel에 알림을 보내는 방법을 알 수 없습니다. Worksheet_Change 및 Worksheet_SelectionChange를 사용하여 시도했지만 둘 다 리스너에서 설정 한 코드를 활성화하지 않습니다. 이 코드 (FYI)는 필터가 사용 중인지 확인하고 그에 따라 그룹화를 조정합니다. Excel이 존재 함을 알게되면 정상적으로 작동합니다.

내 청취자를 조사했는데 코드를 삽입하여 활성화 할 수있는 곳이 없습니다. 필터가 변경되었을 때 알림을받는 리스너가 필요합니다.

의견이 있으십니까? 그것은 단순히 타지 범위 변경 있다면 당신은 테이블을 언급

+0

필터는 VBA를 통해 트리거됩니까? 1.'PivotTable_changed()'이벤트 2. 2.'인터 섹트 (목표, 범위 ("A2"))가 도움이 될 수 있습니다. – bonCodigo

+0

아니, 그들은 정상적인 테이블의 상단 행을 클릭하고 거기에 필터를 변경하여 트리거됩니다. 내가 VBA를 사용하여 트리거 된 것이 좋겠어 ... –

답변

3

좋아요, 약간의 연구 끝에 나는 주변의 일을 알아 냈습니다. 큰 문제는 필터를 변경해도 VBA에서 들릴 수있는 이벤트가 발생하지 않는다는 것입니다. 큰 문제.

간단한 해결책 : 수신기를 활성화 할 수있는 것을 만드십시오.

내가 끝낸 것은 붕괴의 영향을받지 않을 표 바깥의 셀을 찾은 다음 매우 간단한 수식 (= Count (H : H))을 추가 한 것입니다. 이제 테이블이 접힐 때마다 Worksheet_Calculate 리스너를 활성화하는 카운트가 영향을받습니다. 그리고 짜잔! 동적으로 그룹화를 변경할 수 있습니다 :-).

그래서 당신은 그것을 가지고 있습니다. 워크 시트 리스너를 통해 활성화되는 필터를 감지해야하는 경우 계산 수신기를 활성화하는 수식을 설정하기 만하면됩니다.

참조 : [동일한 항목의 MSDN 기사]. 1이 기사에서 자세히 설명하는 것처럼이 문제를 해결하는 훨씬 더 강력한 방법이 있습니다.

+0

+1 자신의 솔루션을 창의적으로 찾아서 ... 한 명이 배울 수 있습니다. –

+0

감사합니다 스콧, 나는 할 수있는 일을한다 :-). –

1
  • 내가 난처한 상황에 빠진있어 검색의 시간 ... 후, 그래서

Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

  • , 당신이 시도 할 수 피벗 테이블의 가정 다음,

If Intersect(Target, Range("A2"))

+0

그것은 피벗 테이블이 아니에요, 그것은 단지 형식의 테이블입니다. 문제는 필터가 활성화되었다는 것을 내 코드에 알리기 위해 Excel이 필요하다는 것입니다. 만약 내가 그것이 활성화되었다는 것을 알았다면 나는 그 범위에 대한 테스트를 할 수 있었고 그 범위에서 벗어난 숫자가 사용 중이거나 아닌지를 알 수있었습니다. –

관련 문제