Как сделать все элементы, кроме "(пусто)" видимыми в сводной диаграмме Excel?
При записи отмены выбора "пустых" элементов я получаю явное упоминание всех элементов.
ActiveChart.PivotLayout.PivotTable _
.PivotFields("[Table1].[Field1].[Field1]").VisibleItemsList = _
Array("[Table1].[Field1].&[Item1]", _
"[Table1].[Field1].&[Item2]", _
"[Table1].[Field1].&[Item3]", _
"[Table1].[Field1].&[Item4]", _
"[Table1].[Field1].&[Item5]", _
"[Table1].[Field1].&[Item6]")
Но я не могу упомянуть предметы, так как я не знаю их заранее (и они находятся в модели данных).
Код должен быть примерно таким:
With ActiveChart.PivotLayout.PivotTable
.PivotFields("[Table1].[Field1].[Field1]").VisibleItemsList = Array("")
.PivotFields("[Table1].[Field1].[Field1]").PivotItems("(blank)").Visible = False
End With
РЕДАКТИРОВАТЬ: видимо, .PivotItems("(blank)").Visible = False
должен делать именно то, что мне нужно, но это не так... (времявыполнения '1004': невозможно получить свойство PivotItems класса PivotField)
2 ответа
Я нашел решение / обходной путь:
Dim PivItem As PivotItem
Dim PivFieldsArray() As Variant
Dim i As Integer
With ActiveChart.PivotLayout.PivotTable.PivotFields("[Table1].[Field1].[Field1]")
For Each PivItem In .PivotItems
ReDim Preserve PivFieldsArray(0 To i)
If PivItem.name <> "[Table1].[Field1].&" Then
PivFieldsArray(i) = PivItem.name
i = i + 1
End If
Next
.VisibleItemsList = PivFieldsArray
End With
Прошло некоторое время, но у меня была такая же проблема, и я просто нашел другое решение, которое сработало в моей ситуации.
Вместо записи «отмена выбора пустого», что я сделал сначала, но не сработало, я записал «Фильтр меток» с «не равно:» (без ввода в текстовое поле). Это дало мне следующий код (слегка измененный, так как я использую оператор with):
.PivotFields("[Range].[Street Direction Code].[Street Direction Code]").PivotFilters.Add2 _
Type:=xlCaptionDoesNotEqual, Value1:=""