powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
14 сообщений из 14, страница 1 из 1
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38318741
msleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть например сводная таблица с названием "СВ1". С помощью макроса пытаюсь обновить таблицу и потом после обновления произвожу вычисления используя итоги из сводной. Получается так, что при запуске макроса расчеты идут, а обновление еще не закончилось. Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA. Помогите с кодом
...
Рейтинг: 0 / 0
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38318871
Pall2030
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может поможет если использовать нечто вроде:
Код: vbnet
1.
Application.Wait (Now + TimeValue("0:00:20"))
...
Рейтинг: 0 / 0
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38318873
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно использовать событие PivotTableUpdate
Код: vbnet
1.
2.
3.
4.
' На листе Sheets(1) со сводной таблицей
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
  IsUpdated = True
End Sub



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
' В модуле
Public IsUpdated As Boolean

Sub Main()
  Dim pt As PivotTable, pc As PivotCache
  Set pt = Sheets(1).PivotTables(1)
  Set pc = ThisWorkbook.PivotCaches(pt.CacheIndex)
  ' Снять флаг
  IsUpdated = False
  ' Обновить
  pc.Refresh
  ' Ждать завершения обновления по флагу
  While Not IsUpdated: DoEvents: Wend
  ' Продолжить
  Debug.Print IsUpdated
End Sub
...
Рейтинг: 0 / 0
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38318878
Pall2030
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя конечно, точное окончание обновления не поймать
...
Рейтинг: 0 / 0
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38319025
msleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZVI, запускаю через форму по нажатию кнопки

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
       
    Set exWb = ThisWorkbook
    
    Dim pt As PivotTable, pc As PivotCache
    Set pt = exWb.Sheets("Аудиторы").PivotTables(1)
    Set pc = exWb.PivotCaches(pt.CacheIndex)
    
    
    exWb.Sheets("Управление").Cells(1, 2).Value = Me.Т_Год.Value
    exWb.Sheets("Управление").Cells(2, 2).Value = Me.Т_Месяц.Value
    
    IsUpdated = False
    pc.Refresh 'обновление кэш Аудиторы
    While Not IsUpdated: DoEvents: Wend
    Debug.Print IsUpdated



странно один раз сработало, а если повторно выполняю выдает ошибку!
и подсвечивает строчку

Код: vbnet
1.
pc.Refresh 'обновление кэш Операторов
...
Рейтинг: 0 / 0
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38319030
msleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZVI,
ошибка run-time error 1004 application-defined or object-defined error
...
Рейтинг: 0 / 0
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38319064
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причины могут быть разными, без живого примера можно только гадать.
Например, в запрос может попадать некорректная дата (меньше 1900 года), возможно, из-за этих строк:
exWb.Sheets("Управление").Cells(1, 2).Value = Me.Т_Год.Value
exWb.Sheets("Управление").Cells(2, 2).Value = Me.Т_Месяц.Value
...
Рейтинг: 0 / 0
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38319066
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверьте еще, не текст ли записывается вместо даты в тех строчках
...
Рейтинг: 0 / 0
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38319953
msleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZVI, Удаляю эти строчки и все равно выдаёт ошибку
...
Рейтинг: 0 / 0
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38320036
Фотография Ser Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сводная как должна обновляться? При активации листа или по таймеру?
...
Рейтинг: 0 / 0
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38320039
Фотография Ser Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При активации листа
Код: xml
1.
2.
3.
Private Sub Worksheet_Activate()
    ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
End Sub
...
Рейтинг: 0 / 0
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38323332
msleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ser Artur,

сводная обновляется при нажатии кнопки на форме
...
Рейтинг: 0 / 0
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38345016
msleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msleg,

Почему возникает ошибка при обновлении кэш сводной таблицы (источник находится во внешней БД Access) (office 2010)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
    Set exWb = ThisWorkbook
    
    Dim pt As PivotTable, pc As PivotCache
    Set pt = exWb.Sheets("Аудиторы").PivotTables(1)
    Set pc = exWb.PivotCaches(pt.CacheIndex)
    
    exWb.Sheets("Аудиторы").Select
    pc.Refresh 'обновление кэш
...
Рейтинг: 0 / 0
Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
    #38346187
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msleg, у меня все срабатывает корректно: сделал сводную из данных northwind.mdb , запустил Main, сработало событие PivotTableUpdate и т.д.. Повторный запуск Main также срабатывает корректно. Проверьте то же самое у себя без внесения изменений в код Main, если работает, значит проблема где-то в другом месте.
Гадать не интересно, повторюсь, нужен живой пример в виде какой-нибудь небольшой тестовой база данных и книги excel со сводной таблицей и проблемным кодом.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как обновить сводную таблицу, чтобы при этом не выполнялись другие процедуры с помощью VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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