|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
Добрый день! возникла проблема с обновлением сводной таблицы с помощью VBA Использую следуЮщий код: Код: vbnet 1. 2. 3. 4. 5. 6.
Он срабатывает нормально, но если его добавить в код Function ( я хочу, чтобы в зависимости от желаемого product_type_value, это значение выбиралось бы в сводной, и на основе выданного диапазона делался бы расчет), то при обновлении сводной я получаю пустые значения, и дальше макрос ничего не делает. Подскажите, пожалуйста, из-за чего это может быть? что не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2012, 16:45 |
|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
skleppi, хоть какие-нибудь предположения? :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2012, 22:32 |
|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
А у вас одна сводная на листе? - тогда зачем нужен for each ... next ? - достаточно ActiveSheet.PivotTables(0).Name Ну и в вашем случае (текущий лист, одна сводная на нём) попробуйте хотя бы так: Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2012, 23:04 |
|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
AndreTM, не выходит. когда сводная должна обновляться в процессе вычисления функции, ничего не происходит, сводная не обновляется... может так и должно быть, и это просто невозможно - на лету брать новый диапазон для функции, в зависимости от выбора в сводной, когда этот выбор - входящий аргумент функции ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2012, 23:50 |
|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
Ну, замени сводную на MSQuery или запрос через ADODB... Ибо сводные - это не только ценный мех, но и куча заморочек от разработчиков каждой версии Office; не считая возрастания объёма хранилища при неправильной настройке. P.S. Сводные - зло, придуманное для офисных работников, не умеюших оперировать SQL-запросами... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2012, 00:11 |
|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
AndreTM, дело в том, что мне результатом нужен именно диапазон значений [1,2,...,n]. исходник тоже в экселе, а можно обратиться запросом прямо к таблице на листе? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2012, 00:27 |
|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
А исходник и результат показать слабО? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2012, 00:43 |
|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
AndreTM, коммерческая тайна)) на самом деле просто таблица из 5 столбцов, на которой строится сводная. в зависимости от выбора типа продукта, меняется результат сводной, который используется для построения тренда ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2012, 01:00 |
|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
Таки ваши ойзонги - вам и в тухес, ибо Низзя разве почтой сотню-другую строк выслать, а не весю презентацию? Тем более, что я вашими "трендАми" закончил заниматься, ИМХО, еще тогда, когда ваши начальники школу уканчивали... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2012, 01:26 |
|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
AndreTM, в файле пример расчета. vba-функция перестает работать на этапе записи значений в диапазонъ ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2012, 02:05 |
|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
Нафик... ну нафик там сводная? Да, я не спорю - удобно, если конечные данные будут получены прямо в сводной . А если мы уже и так используем VBA/VB.NET, то почему бы сразу не сформировать нужное количество SQL-запросов к source data (через RecordSet для старых версий или DataTable для новых)? И затем - раскидать полученные данные в нужные места, поимев их, как желаете? Мне просто сейчас ночью лень изучать ваши формулы... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2012, 02:29 |
|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
AndreTM, тогда придется для каждого типа продукта прописывать формулы тренда, а так бы они сами получались, в зависимости от сделанного выбора) и просто интересно уже, почему не срабатывает функция ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2012, 02:39 |
|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
Ну, при желании я могу поразбираться... Но общий-то принцип всё равно: бороться с пользователями (если, конечно, это не вы, но и то...). Суть в чём - намного проще ОДИН раз кликнуть в кнопочку - и получить результат. Как там будет действовать ПО - что юзеру, что вам - без разницы (хотя, в большинстве случаев, оптимизированный код на VB работает быстрее, чем последовательный пересчёт формул листов). С другой стороны, применительно к вашей задаче - чем "они, само получаемые формулы тренда" отличаются от "программного расчёта"? Кроме этого, Вы абсолютно не заморачиваетесь над тем, что там на листе (ибо там _результаты_), а логика любых расчетов заложена в конкретном месте кода... который, кстати, модет и внешние данные получать намного проще и быстрее, чем встроенные в Application средства... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2012, 02:53 |
|
Pivot Table: PivotFields Update (VBA)
|
|||
---|---|---|---|
#18+
AndreTMоптимизированный код на VB работает быстрее, чем последовательный пересчёт формул листовВесьма спорное утверждение ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2012, 10:12 |
|
|
start [/forum/topic.php?fid=61&fpage=96&tid=2175498]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 326ms |
total: | 451ms |
0 / 0 |