我正在使用代码:
Sub weekselect()
Dim CurWkNum As Integer: CurWkNum = 31
Dim pvtI As PivotItem
With Worksheets("PIVOT 4").PivotTables(1)
.PivotCache.Refresh
.ClearAllFilters
For Each pvtI In .PivotFields("WEEK_NUMBER").PivotItems
If pvtI > CurWkNum Then
CurWkNum = pvtI
End If
Next pvtI
For Each pvtI In .PivotFields("WEEK_NUMBER").PivotItems
pvtI.Visible = (CInt(pvtI.Name) = CurWkNum)
Next pvtI
End With
End Sub
这是选择枢轴中的最后一周,并且适用于之前的要求。但是,我现在希望能够根据当前的ISO周选择当前周和/或当前周和4周。
非常感谢任何帮助!
非常感谢!
那里有好心的撒玛利亚人吗?我对VBA毫无希望,并在互联网上搜索了这个并在几个论坛上询问。我希望这将是一个简单的编辑。我设法解决了一些原始要求,现在只需要宏来选择上面加上接下来的4周数据。所以我想是这样的:
If pvtI > CurWkNum Then
CurWkNum = pvtI +1
CurWkNum = pvtI +2
CurWkNum = pvtI +3
CurWkNum = pvtI +4
真的坚持这一点,所以如果任何VBA职业选手在那里可能会对我表示同情并指出我正确的方向,我将不胜感激。
答案 0 :(得分:0)
好到目前为止,我已经得到了这个:
Sub Test() Dim ISOweekNum AsInteger Dim pvtI As PivotItem Dim ws As Worksheet
ForEach ws In ThisWorkbook.Worksheets(Array("PIVOT", "PIVOT 2", "PIVOT 3", "PIVOT 4")) With ws.PivotTables(1)
.PivotCache.Refresh
.ClearAllFilters
ISOweekNum = DatePart("ww", Date, vbMonday, vbFirstFourDays)
ForEach pvtI In .PivotFields("WEEK_NUMBER").PivotItems
pvtI.Visible = (CInt(pvtI.Name) >= ISOweekNum And CInt(pvtI.Name) <= ISOweekNum + 4) Next pvtI EndWith Next ws EndSub
我不能让它工作但是相信它越来越近了。我附上了一个样本工作簿,上面是module1。
那里的任何职业选手都可以在5分钟内让我正确,但我会很感激,因为我正在努力解决这个问题。
谢谢!