|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(95,97,2000,xp,2003,2007): 2019
* 아래줄에 질문을 작성하세요 >>
피벗테이블로 정렬후,
어떠한 쉘에 May 2019입력하면,
한쉘에 피벗테이블이 3개정도 있을경우,
피벗테이블 모두 같은 날짜로 2019 5월달만 자동으로 선택되게 가능하나요?
==============[한석희님 글에 대한 답변입니다]==============
VBA의 Worksheet_Change 이벤트를 이용하였습니다.
첨부파일 참조하세요....
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Me.Range("A1").Address Then
If IsDate(Target) Then
Application.EnableEvents = False
Call ChangePivotItem(Target.Cells(1))
Application.EnableEvents = True
Else
Target.Select
MsgBox "날짜 형식으로 입력하세요.", vbCritical
End If
End If
End Sub
Sub ChangePivotItem(datX As Date)
Dim pvt As PivotTable
Dim pvtFld As PivotField, pvtItm As PivotItem
Dim iCount As Integer
For Each pvt In ActiveSheet.PivotTables
'Debug.Print pvt.Name
pvt.PivotCache.Refresh
Set pvtFld = pvt.PivotFields("Date Issued")
pvtFld.ClearAllFilters
pvtFld.EnableMultiplePageItems = True
iCount = 0
For Each pvtItm In pvtFld.PivotItems
'Debug.Print pvtItm
If Month(datX) = Month(pvtItm) Then
iCount = iCount + 1
Else
If iCount = 0 And pvtFld.PivotItems(pvtFld.PivotItems.Count) = pvtItm Then
Else
pvtItm.Visible = False
End If
End If
Next
If iCount < 1 Then
'MsgBox Month(datX) & "월의 Item이 없습니다. 따라서 모두 선택합니다."
MsgBox "피봇테이블[" & pvt.Name & "]의 피봇필드[" & pvtFld & "]항목중에 " & Month(datX) & "월에 해당하는 항목이 없습니다. 따라서 모두 선택합니다."
pvtFld.ClearAllFilters
End If
Next
End Sub |
|