Страницы: 1
RSS
Ошибка "нельзя установить свойство visible класса PivotItem"
 
Добрый день.  
Я нашла похожий пример решения своей задачи на вашем сайте. Но у меня почему-то выскакивает ошибка "нельзя установить свойство visible класса PivotItem". Причём она выскакиевает в команде: .PivotItems(i).Visible = True    
Как я понимаю .PivotItems(i).Visible = False оно пропустило.    
Подскажите, пожалуйста, с чем это может быть связано? Можно мне как "чайнику" объяснить, а-то я первый раз макросы пишу. Спасибо.  
 
Макрос:    
With ActiveSheet.PivotTables("Сводная таблица3").PivotFields( _"Влияние последствий")  
 For i = 1 To .PivotItems.Count  
   If .PivotItems(i).Value = "(пусто)" Or .PivotItems(i).Value = "" Then  
      .PivotItems(i).Visible = False  
   Else:  
      .PivotItems(i).Visible = True  
   End If  
 Next  
End With
 
Если у вас вопрос состоит в том, чтобы скрывать "пусто" и пустые значения, то я бы делал проще:  
 
Sheets("Лист1").PivotTables("НазваниеТаблицы").PivotFields("НазваниеПоля").ClearAllFilters  
   Sheets("Лист1").PivotTables("НазваниеТаблицы").PivotCache.Refresh  
   With Sheets("Лист1").PivotTables("НазваниеТаблицы").PivotFields("НазваниеПоля")  
       .PivotItems("").Visible = False  
       .PivotItems("(blank)").Visible = False  
   End With
 
{quote}{login=Евгений}{date=29.11.2011 12:56}{thema=}{post}Если у вас вопрос состоит в том, чтобы скрывать "пусто" и пустые значения, то я бы делал проще:  
 
Sheets("Лист1").PivotTables("НазваниеТаблицы").PivotFields("НазваниеПоля").ClearAllFilters  
   Sheets("Лист1").PivotTables("НазваниеТаблицы").PivotCache.Refresh  
   With Sheets("Лист1").PivotTables("НазваниеТаблицы").PivotFields("НазваниеПоля")  
       .PivotItems("").Visible = False  
       .PivotItems("(blank)").Visible = False  
   End With{/post}{/quote}  
 
Я бы с радостью, но у меня могут меняться значения в сводной таблице и не всегда есть "пусто" или пустые значения. А в случае их отсутствия выскакивает ошибка. Поэтому я и начала пользоваться "If". Если можно как-то по другому, то помогите.
 
Добавьте после обновление кэша сводной таблицы on error resume next.
 
{quote}{login=Евгений}{date=29.11.2011 02:21}{thema=}{post}Добавьте после обновление кэша сводной таблицы on error resume next.{/post}{/quote}  
Простите, а можно как для "чайника" написать куда мне чего добавить. А-то я ничего не поняла.
 
Sheets("Лист1").PivotTables("НазваниеТаблицы").PivotFields("НазваниеПоля").ClearAllFilters  
Sheets("Лист1").PivotTables("НазваниеТаблицы").PivotCache.Refresh  
On Error Resume Next  
With Sheets("Лист1").PivotTables("НазваниеТаблицы").PivotFields("НазваниеПоля")  
.PivotItems("").Visible = False  
.PivotItems("(blank)").Visible = False  
End With  
 
У меня примерно такая структура в отчете используется. Попробуйте
 
Огромное спасибо.  
Мой первый макрос и даже вроде бы получился. :)  
Нужно проверить ещё конечно, как он будет подтягивать данные, если что-то изменится. Но на первый взгляд работает.    
Спасибо, спасибо. :)
Страницы: 1
Наверх