Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Pivot Table: PivotFields Update (VBA) / 15 сообщений из 15, страница 1 из 1
01.08.2012, 16:45
    #37900733
skleppi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
Добрый день!

возникла проблема с обновлением сводной таблицы с помощью VBA

Использую следуЮщий код:

Код: vbnet
1.
2.
3.
4.
5.
6.
    For Each pvt In ActiveSheet.PivotTables
    pivot_table_name = pvt.Name
    Next

  ActiveSheet.PivotTables(pivot_table_name).PivotFields("Product Type"). _
        CurrentPage = product_type_value



Он срабатывает нормально, но если его добавить в код Function ( я хочу, чтобы в зависимости от желаемого product_type_value, это значение выбиралось бы в сводной, и на основе выданного диапазона делался бы расчет), то при обновлении сводной я получаю пустые значения, и дальше макрос ничего не делает.

Подскажите, пожалуйста, из-за чего это может быть? что не так?
...
Рейтинг: 0 / 0
01.08.2012, 22:32
    #37901075
skleppi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
skleppi,

хоть какие-нибудь предположения? :))
...
Рейтинг: 0 / 0
01.08.2012, 23:04
    #37901087
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
А у вас одна сводная на листе? - тогда зачем нужен for each ... next ? - достаточно ActiveSheet.PivotTables(0).Name

Ну и в вашем случае (текущий лист, одна сводная на нём) попробуйте хотя бы так:
Код: vbnet
1.
2.
3.
4.
With ActiveSheet.PivotTables(ActiveSheet.PivotTables.Count)
    .PivotFields("Product Type").CurrentPage = product_type_value
    .Refresh
End With
...
Рейтинг: 0 / 0
01.08.2012, 23:50
    #37901107
skleppi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
AndreTM,

не выходит. когда сводная должна обновляться в процессе вычисления функции, ничего не происходит, сводная не обновляется...
может так и должно быть, и это просто невозможно - на лету брать новый диапазон для функции, в зависимости от выбора в сводной,
когда этот выбор - входящий аргумент функции
...
Рейтинг: 0 / 0
02.08.2012, 00:11
    #37901115
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
Ну, замени сводную на MSQuery или запрос через ADODB... Ибо сводные - это не только ценный мех, но и куча заморочек от разработчиков каждой версии Office; не считая возрастания объёма хранилища при неправильной настройке.

P.S. Сводные - зло, придуманное для офисных работников, не умеюших оперировать SQL-запросами...
...
Рейтинг: 0 / 0
02.08.2012, 00:27
    #37901128
skleppi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
AndreTM,

дело в том, что мне результатом нужен именно диапазон значений [1,2,...,n].
исходник тоже в экселе, а можно обратиться запросом прямо к таблице на листе?
...
Рейтинг: 0 / 0
02.08.2012, 00:43
    #37901135
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
А исходник и результат показать слабО?
...
Рейтинг: 0 / 0
02.08.2012, 01:00
    #37901146
skleppi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
AndreTM,

коммерческая тайна))
на самом деле просто таблица из 5 столбцов, на которой строится сводная.
в зависимости от выбора типа продукта, меняется результат сводной, который используется для построения тренда
...
Рейтинг: 0 / 0
02.08.2012, 01:26
    #37901155
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
Таки ваши ойзонги - вам и в тухес, ибо Низзя разве почтой сотню-другую строк выслать, а не весю презентацию?
Тем более, что я вашими "трендАми" закончил заниматься, ИМХО, еще тогда, когда ваши начальники школу уканчивали...
...
Рейтинг: 0 / 0
02.08.2012, 02:05
    #37901176
skleppi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
AndreTM,

в файле пример расчета.
vba-функция перестает работать на этапе записи значений в диапазонъ
...
Рейтинг: 0 / 0
02.08.2012, 02:29
    #37901182
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
Нафик... ну нафик там сводная?
Да, я не спорю - удобно, если конечные данные будут получены прямо в сводной .
А если мы уже и так используем VBA/VB.NET, то почему бы сразу не сформировать нужное количество SQL-запросов к source data (через RecordSet для старых версий или DataTable для новых)? И затем - раскидать полученные данные в нужные места, поимев их, как желаете?
Мне просто сейчас ночью лень изучать ваши формулы...
...
Рейтинг: 0 / 0
02.08.2012, 02:39
    #37901186
skleppi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
AndreTM,

тогда придется для каждого типа продукта прописывать формулы тренда, а так бы они сами получались, в зависимости от сделанного выбора)
и просто интересно уже, почему не срабатывает функция
...
Рейтинг: 0 / 0
02.08.2012, 02:53
    #37901190
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
Ну, при желании я могу поразбираться...
Но общий-то принцип всё равно: бороться с пользователями (если, конечно, это не вы, но и то...).

Суть в чём - намного проще ОДИН раз кликнуть в кнопочку - и получить результат. Как там будет действовать ПО - что юзеру, что вам - без разницы (хотя, в большинстве случаев, оптимизированный код на VB работает быстрее, чем последовательный пересчёт формул листов).

С другой стороны, применительно к вашей задаче - чем "они, само получаемые формулы тренда" отличаются от "программного расчёта"? Кроме этого, Вы абсолютно не заморачиваетесь над тем, что там на листе (ибо там _результаты_), а логика любых расчетов заложена в конкретном месте кода... который, кстати, модет и внешние данные получать намного проще и быстрее, чем встроенные в Application средства...
...
Рейтинг: 0 / 0
02.08.2012, 10:12
    #37901378
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
AndreTMоптимизированный код на VB работает быстрее, чем последовательный пересчёт формул листовВесьма спорное утверждение
...
Рейтинг: 0 / 0
03.08.2012, 12:59
    #37903330
skleppi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot Table: PivotFields Update (VBA)
AndreTM,

в целом, согласна с вами, просто не думала, что написать функцию vba, связанную с пересчетом сводной, будет такой уж большой проблемой
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Pivot Table: PivotFields Update (VBA) / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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