Итак, я создал сводную таблицу и кнопки для нее.Каждая кнопка представляет поле, которое войдет в часть значений сводной таблицы.Каждое из этих полей - это годы 2016, 2017, 2018 и 2019. Я также создал кнопку для одновременного представления всех лет.Я также применяю слайсер для других полей и фильтров.- для фильтра я бы просто скопировал сводную таблицу и поместил выбранное поле на вкладку фильтра сводной таблицы.(Надеюсь, это имеет смысл)
Я хочу знать, почему, когда я впервые запускаю Excel.Ни одна из кнопок не работает.Это работает, только если я нажимаю на кнопку «Весь год» во второй раз, то есть в первый раз он говорит, что объект не найден.Но во второй раз, когда я нажал на него, он будет работать как обычно.Все остальные кнопки тоже будут работать.
Эта проблема возникает после того, как я добавил фильтр для слайсеров.
Sub Add_Value_MasterCode()
Dim pt As PivotTable
Dim pf As PivotField
Dim SField As String
'Set Variable
Set pt = ActiveSheet.PivotTables(1)
SField = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
'Remove Existing Fields
For Each pf In pt.DataFields
If pf.Name <> "Values" Then
pf.Orientation = xlHidden
End If
Next pf
'Add fields that button was clicked for
pt.PivotFields(SField).Orientation = xlDataField
'Set title and color for each fields
ActiveSheet.ChartObjects("Chart 1").Chart.ChartTitle.Text = SField & " Revenue"
ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of " & SField).Caption = "Year " & SField
If SField = "2016" Then
Call year2016
ElseIf SField = "2017" Then
Call year2017
ElseIf SField = "2018" Then
Call year2018
ElseIf SField = "2019" Then
Call year2019
End If
End Sub
Это другой код.
Sub Add_All()
Dim pt As PivotTable
Dim pf As PivotField
Dim SField As String
'Set Variable
Set pt = ActiveSheet.PivotTables(1)
SField = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
'Remove Existing Fields
For Each pf In pt.DataFields
If pf.Name <> "Values" Then
pf.Orientation = xlHidden
End If
Next pf
With ActiveSheet.PivotTables("pivottable1")
.AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields("2016"), "Year 2016", xlSum
.AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields("2017"), "Year 2017", xlSum
.AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields("2018"), "Year 2018", xlSum
.AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields("2019"), "Year 2019", xlSum
End With
ActiveSheet.ChartObjects("Chart 1").Chart.ChartTitle.Text = "All Years Revenue"
End Sub
Кажется, он не читает код
For Each pf In pt.DataFields
If pf.Name <> "Values" Then
pf.Orientation = xlHidden
End If
Next pf
Пока я не нажал "Весь год" дляво второй раз.