2016-05-31 4 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 

есть способ установить переменную = в текущем году, так что я могу использовать/Then заявление, если отформатировать этот стержень вместо таблицы?

ответ

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

' Для каждого' циклы еще приятнее .... но вы читаете ум 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

Это то, что я думал, и я думаю, что мой вопрос сформулирован неверно. Поле Pivot имеет годы с 2008-2020 годов. Есть ли способ установить год к текущему году, так что мне не нужно обновлять макрос в следующем году, когда его 2017? –

+0

@sorenthomsen хорошо вы знаете, как объявить переменную, не так ли? Ответ Дуга имеет 3 примера * объектных переменных *. Значения точно такие же, за исключением того, что вы будете выполнять «Dim value As Integer» и назначьте его без ключевого слова 'Set'. –

+0

Нет. Я сказал ** без ** ключевого слова 'Set', поэтому' Dim yr As Integer: yr = Year (Date) ', который присваивал бы' yr' значение текущего календарного года. Ключевое слово 'Set' необходимо только при назначении ** ссылок на объекты **. –

Смежные вопросы