powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Фильтр в сводной таблице
7 сообщений из 7, страница 1 из 1
Фильтр в сводной таблице
    #39230363
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Макрос строит сводную таблицу. Поле "Статус" ставит в фильтр и устанавливает значение "План выполнен". Бывают случаи, когда в исходных данных отсутствует значение "План выполнен". И макрос выполняется с ошибкой. Как можно сделать так, если отсутствует значение, то макрос прекращает строить сводную таблицу, и продолжает работать дальше (строит другие таблицы)?
...
Рейтинг: 0 / 0
Фильтр в сводной таблице
    #39231395
kos20
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

Это зачем?
Код: vbnet
1.
PT.PivotFields("Статус").CurrentPage = "Выполнен план"
...
Рейтинг: 0 / 0
Фильтр в сводной таблице
    #39231397
kos20
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может Name
...
Рейтинг: 0 / 0
Фильтр в сводной таблице
    #39232042
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kos20ferzmikk,

Это зачем?
Код: vbnet
1.
PT.PivotFields("Статус").CurrentPage = "Выполнен план"



Вообще нужно построить сводную таблицу, где в фильтре поля "Статус" выбирается элемент "Выполнен план". Просто не всегда присутствует такое значение в исходных данных
...
Рейтинг: 0 / 0
Фильтр в сводной таблице
    #39232881
kos20
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй так

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Sub Макрос()
    Dim PTCache As PivotCache
    Dim PT As PivotTable

    For Each PTForDelete In ThisWorkbook.Sheets("Сводная таблица").PivotTables
        PTForDelete.TableRange2.Clear
    Next PTForDelete

    Set PTCache = ThisWorkbook.PivotCaches.Create( _
        SourceType:=xlDatabase, _
        SourceData:=ThisWorkbook.Worksheets("Исходные данные").Range("A1").CurrentRegion.Address)

    ThisWorkbook.Sheets("Сводная таблица").Activate
    Set PT = ThisWorkbook.Sheets("Сводная таблица").PivotTables.Add( _
        PivotCache:=PTCache, _
        TableDestination:=ThisWorkbook.Sheets("Сводная таблица").Range("A2"), _
        TableName:="СводнаяТаблица")
        
        
    Set PT = ActiveSheet.PivotTables("СводнаяТаблица")
    PT.PivotFields("Статус").Orientation = xlColumnField
    PT.PivotFields("ТТ").Orientation = xlRowField

With ActiveSheet.PivotTables("СводнаяТаблица").PivotFields("Статус")
     For Each PItem In .PivotItems
        PItem.Visible = False
        If PItem.Name = "Выполнен план" Then PItem.Visible = True
     Next
End With
  
End Sub
...
Рейтинг: 0 / 0
Фильтр в сводной таблице
    #39232983
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kos20попробуй так

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
...
With ActiveSheet.PivotTables("СводнаяТаблица").PivotFields("Статус")
     For Each PItem In .PivotItems
        PItem.Visible = False
        If PItem.Name = "Выполнен план" Then PItem.Visible = True
     Next
End With  
...


Если в исходной базе данных в поле "Статус" только одно значение ("План не выполнен"), то на выделенной строке вылезает ошибка "Нельзя установить свойство Visible класса PivotItem". Если присутствует больше одного значения ("План не выполнен" и "Выполнен план"), то ошибка не вылезает.
...
Рейтинг: 0 / 0
Фильтр в сводной таблице
    #39233197
kos20
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,
проще всего влепи выше On Error Resume Next
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Фильтр в сводной таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]