2016-04-23 2 views
0

У меня сводная таблица на листе Excel. В нем есть поле под названием «Сезон», которое представляет собой поле отчета с множественным выбором и некоторыми пустыми значениями. Я хочу посмотреть, выбраны ли пустые значения в фильтре (то есть, видны) с помощью следующего кода.Как обнаружить видимость пустого PivotItem

Sub ShowVisbilityOfBlankItem() 

    Dim PivotField As PivotField 
    Set PivotField = ActiveSheet.PivotTables(1).PivotFields("Season") 

    Dim PivotItem As PivotItem 
    Set PivotItem = PivotField.PivotItems("(blank)") 

    Debug.Print PivotItem.Visible ' Runtime Error 13: Type mismatch 

End Sub 

Однако последняя строка приводит к ошибке Runtime 13: несоответствие типа. Это не происходит для других PivotItem с. Это ошибка в Excel (2010) или в моем коде? Есть ли другой способ определить, видны ли пробелы?

Можно установить видимость пустого PivotItem. Кроме того, локальное окно отображает значение True для PivotItem.Visible, независимо от того, видно оно или нет.

+0

Ваш код работает для меня и возвращает правильное значение для '.Visible'. Нет ошибки 13. – OldUgly

+0

Какую версию Excel вы используете? Я работаю в корпоративной среде, где я не могу выбрать версию Excel. –

+0

Excel 2010 на Win10. – OldUgly

ответ

1

После прибегая к помощи некоторым и получить ту же ошибку, я наткнулся на этом ответ в другом вопросе: https://stackoverflow.com/a/39107082/1626443

Я думаю, что проблема связана с языковой версией Excel и он может быть обработан только если значение буквально (blank). Я использую немецкую версию, и до этого она была (leer), и это не сработало.

Это снимало ошибка для меня:

sStore = pi.Value 
pi.Value = sStore 
If pi.Visible Then 'no more error 

Обратите внимание, вы технически должны сделать это только один раз, и я думаю, что следующий код должен работать, а также:

If pi.Value = "(BLANK_IN_YOUR_LANGUAGE)" Then pi.Value = "(blank)" 

и потенциально даже это один:

If pi.Value = "(BLANK_IN_YOUR_LANGUAGE)" Then pi.Value = pi.Value 

Это очень странная и неприятная ошибка, если честно.

Я знаю, что это был год назад, но, возможно, он по-прежнему помогает вам или кому-то еще в его путешествии через PivotItems.

+0

Я могу подтвердить, что проблема возникает только тогда, когда язык является немецким, а не когда язык является английским (не пробовал другие языки). Также верно, что установка 'PivotItem.Value = PivotItem' (один раз) заставила ошибку времени выполнения исчезнуть. Тем не менее, я все еще могу найти пустой 'PivotItem' со значением' '(blank)" ', хотя на дисплее отображается' '(leer)" '. –

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