2016-05-31 26 views
0

我當前的代碼我怎麼能簡化這個驗證碼[VBA]

With PT.PivotFields("Year") 
     .PivotItems("2012").Visible = False 
     .PivotItems("2013").Visible = False 
     .PivotItems("2014").Visible = False 
     .PivotItems("2011").Visible = False 
     .PivotItems("2015").Visible = False 
    End With 

有沒有一種方法來設置一個變量=在當年,這樣我可以使用IF /然後語句來格式化這個支點表呢?

回答

1

看看,如果這個工程

Dim pt As PivotTable 
Dim pf As PivotField 
Dim pi As PivotItem 


Set pt = ActiveSheet.PivotTables(1) 
' change field as needed 
Set pf = pt.PivotFields("Year") 

For Each pi In pf.PivotItems 
    If pf.Value <> "2016" Then pi.Visible = False 
Next pi 
+1

'For Each'循環甚至更好......但是你在這裏讀到了OP的想法,這個問題沒有提到任何東西關於「隱藏除今年之外的所有內容」......或者我誤解了它。無論如何,做得好。 –

+0

Ooooh oops O_o我想我是採取了進一步的必要 –

+0

我也沒有意識到這是爲Access和不Excel的......但很容易改變,以說明 –

1

學習使用For循環。

With PT.PivotFields("Year") 
    For yr = 2011 To 2015 
     .PivotItems(CStr(yr)).Visible = False 
    Next 
End With 
+0

這是我在想什麼,我想我的問題是錯誤的措辭。樞軸領域從2008 - 2020年有數年。有沒有辦法將年份設置爲當年,以便我們不需要在明年的2017年更新宏? –

+0

@sorenthomsen你知道如何聲明一個變量,不是嗎? Doug的答案有3個*對象變量*的例子。值完全相同,除非您將'Dim Value As Integer'並將其分配爲不帶'Set'關鍵字。 –

+0

編號我說**沒有**'Set'關鍵字,所以'Dim yr As Integer:yr = Year(Date)',它會將'yr'指定爲當前日曆年的值。只有在分配**對象引用**時才需要設置關鍵字。 –