Как сделать все элементы, кроме "(пусто)" видимыми в сводной диаграмме 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:=""
Другие вопросы по тегам