Вы должны построить строку с последним днем текущего месяца,
проверить, если такой PivotItem
существует,
установить его видимость в true (так как всегда должен быть виден хотя бы 1 стержень)
, а затем переберите все остальные сводные элементы и сделайте их невидимыми:
Sub PivotBraunRefresh()
Dim pi As PivotItem
Dim strMonthEnd As String
' last day of current month as string
strMonthEnd = Format(DateSerial(Year(Date), Month(Date), 1) - 1, "YYYYMMDD")
' refresh pivottable
Sheets("Report-Inv-Actual").PivotTables("PivotTable1").PivotCache.Refresh
With Sheets("Report-Inv-Actual").PivotTables("PivotTable1").PivotFields("Dt")
On Error Resume Next
' check, if pivotfield exists
Set pi = .PivotItems(strMonthEnd)
On Error GoTo 0
If Not pi Is Nothing Then
pi.Visible = True
For Each pi In .PivotItems
If pi.Name <> strMonthEnd Then pi.Visible = False
Next pi
End If
End With
End Sub
Если вы хотите еще больше автоматизировать это, вы можете поместить его в свою подпрограмму Workbook_Open()
.