Страницы: 1
RSS
Макрос. Цикл для нескольких таблиц. Как правильно?
 
Как ЭТО:
Код
[QUOTE]Sub 
For i = 10 To 70
    Sheets("01").PivotTables("i").PivotCache.RefreshOnFileOpen = True
    Sheets("01").PivotTables("i").DisplayFieldCaptions = True
    Next
End Sub[/QUOTE]

, должно быть написано правильно? Т.е. цикл для нескольких таблиц и для особо развитых пользователей  :)
 
Вопроса не понял.
Видно я точно не один из особо развитых пользователей
Когда испробованы все варианты, я начинаю плясать с бубном. Как правило — помогает.
 
Ну после Sub допишите слово(), уберите кавычки в ("i")
И уберите всякие QUOTE в квадратных скобках.  :)
Изменено: Hugo - 15.08.2013 16:29:02
 
Вернулся.
Если вот так:
Код
Sub жжж ()
For i = 10 To 70
    Sheets("01").PivotTables(i).PivotCache.RefreshOnFileOpen = True
    Sheets("01").PivotTables(i).DisplayFieldCaptions = True
    Next
End Sub

То не работает.

для Abakumov, здесь попытка освоить цикл для нескольких операций. При поиске, аналогий не нашел, может в силу собственного непонимания не формулируется и вопрос.
Изменено: Михаил Сид - 15.08.2013 17:31:46 (Доработка)
 
Я писал слово(), а не (слово) :)
 
Михаил Сид, у вас на листе всего три сводные, а вы начинаете с 10... Попробуйте так
Код
Sub test2()
For i = 1 To Sheets("01").PivotTables.Count
    Sheets("01").PivotTables(i).PivotCache.RefreshOnFileOpen = True
    Sheets("01").PivotTables(i).DisplayFieldCaptions = True
    Next
End Sub
 
С 10, потому что их имена будут ещё и текстом обрабатываться, их меньше сотни потому длинна имени=2.

В предложенном Вами коде таблицы привязаны к макс. номеру и обрабатываются от большей к меньшей (это я проверяю свои предположения, (учуся)). А если есть нужда обработать 12÷15 тые таблицы, как писать.
Да! код работает. Спасибо.
 
Между именем и индексом есть отличия. В данном варианте у вас индексы.
Имя - обязательно в кавычках.
Конкретно для вашего случая должно работать так
Код
Sub ttt ()
For i = 10 To 12
Sheets("01").PivotTables(i & "").PivotCache.RefreshOnFileOpen = True
    Sheets("01").PivotTables(i & "").DisplayFieldCaptions = True
    Next
End Sub


upd
Цитата
Вами коде таблицы привязаны к макс. номеру и обрабатываются от большей к меньшей
Цикл привязан к количеству таблиц на листе, и перебираются от по порядку индексов. В вашем примере это "12", "11", "10" (Это к макросу в предыдущем посте.)
Изменено: Михаил С. - 15.08.2013 18:19:04
 
Ексель на это счёт имеет своё мнение (приложил картинку), хотя Ваше толкование значений слов более верное (имхо) чем переводчика.
 
Говоря "имя обязательно в кавычках" я имел в виду в теле макроса, а не отображаемое на листе...
в макросе можно написать Sheets(1) и Sheets("1") (если есть лист с именем 1. Но совсем необязательно, что Sheets(1).Nane = "1" и Sheets("1").Index = 1
 
С именами (диапазонами), почти понятно, есть над чем думать.
Код на учебной табличке работает, при попытке привязать к натуре вопит жёлтым матом:
 
И так тоже:
Код
Sub жжж()
For i = 10 To 15
    'Sheets("00А").PivotTables(i).PivotFields("15").Orientation = xlHidden
    'With ActiveSheet.PivotTables(i).PivotFields("25")
        '.Orientation = xlRowField
        '.Position = 15
    'End With
    Sheets("00А").PivotTables(i).PivotCache.RefreshOnFileOpen = True
    Sheets("00А").PivotTables(i).DisplayFieldCaptions = True
    Next
End Sub
Изменено: Михаил Сид - 15.08.2013 18:59:43
 
Еще раз - сколько у вас сводных на листе?
i не может превышать числа таблиц, всегда начинается с 1 (для сводных).
 
На этом листе 31сводная, их имена 01÷31.
 
Никак не угомонитесь?  :D
Код
Sub жжж()
    For i = 10 To 12
        Sheets("01").PivotTables.Item(CStr(i)).PivotCache.RefreshOnFileOpen = True
        Sheets("01").PivotTables(CStr(i)).DisplayFieldCaptions = True
    Next
End Sub
Я сам - дурнее всякого примера! ...
 
Цитата
Никак не угомонитесь?
Да уж несколько лет туплю. Надо же когда то проломить эту стену. (что делать в соседней камере я пока не знаю)  ;) ))

Вылетает картинка из поста #12
Изменено: Михаил Сид - 15.08.2013 20:22:56
 
Сообществу альтруистов очередное спасибо за неувядаемое желание помочь даже тогда когда помочь может только автор поста...

Все советы работали!
Сводные создавались в разное время и имели разные параметры (как оказалось). Ну и пока по кирпичикам всё не разобрал.. одним словом: заставь дурака молиться, так хорошо если голову только себе разобьёт!
Страницы: 1
Наверх