Excel 2007 VBA - список полей сводной таблицы ???создает ошибку - PullRequest
3 голосов
/ 14 сентября 2011

Последнее обновление от 14 октября 2011 г. - теперь я знаю больше информации, поэтому я обобщу все здесь и удалю все мои предыдущие описания / вопросы.

Проблема в том, что после запуска определенной программы я получаю странную ошибку. Это похоже на, но не совсем так, когда я нажимаю «Разделить». Разница в том, что сплошные серые полосы не отображаются. Это немного странно. Позже я начал думать, что это, вероятно, вызвано списком полей сводных таблиц.

Проблема возникает с любым из трех следующих фрагментов кода

Код 1

Dim pvtCache As PivotCache
For Each pvtCache In ThisWorkbook.PivotCaches
    pvtCache.Refresh
Next pvtCache

Код 2

ThisWorkbook.RefreshAll

Код 3

Dim ws As Worksheet
Dim pt As PivotTable
For Each ws In ThisWorkbook.Worksheets
    For Each pt In ws.PivotTables
        pt.RefreshTable
    Next pt
Next ws

Но не с этим, где единственное отличие - я добавил ws.Activate to Code 3

Код 4

Dim ws As Worksheet
Dim pt As PivotTable
For Each ws In ThisWorkbook.Worksheets
    ws.Activate
    For Each pt In ws.PivotTables
        pt.RefreshTable
    Next pt
Next ws

Итак, мой вопрос, кто-нибудь может объяснить это? Может ли кто-нибудь исправить код 1 (который намного быстрее в электронной таблице с 2 сводными кэшами из больших источников данных, но 46 сводными таблицами), чтобы он работал без этой ошибки?

Спасибо за любую помощь !!!

Ответы [ 2 ]

0 голосов
/ 21 октября 2011

Ваши фрагменты кода работают правильно.

Возможно, после запуска кода экран не обновляется.

Попробуйте добавить этот раунд свой код:

Application.ScreenUpdating = False
    ''//Your code here
DoEvents
Application.ScreenUpdating = True
0 голосов
/ 21 октября 2011

У меня есть несколько сводок из нескольких листов, и все три фрагмента кода работают нормально.Должно быть что-то еще, вызывающее проблему, это не код.

...