Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 13:21   #1
Rok
 
Регистрация: 02.12.2008
Сообщений: 5
Вопрос Макрос для всех листов в книге

Господа, подскажите пожалуйста можно ли применить макрос (состоит из семи макросов поменьше), который обрабатывает таблицу на листе, группируя данные в необходимом для создания сводной таблицы порядке, ко всем листам в книге с одинаковыми таблицами, но разными данными
Rok вне форума Ответить с цитированием
Старый 22.04.2010, 13:59   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

То, что Вы делали для одного листа берете в "скобки"
With Sheets(i)
End With
везде где требуется ставите точки например было cells(...) ставите .cells(...)
подставляя вместо i нужные номера листов выполняеете эту процедуру для каждого из них.
for i = 1 to 10
With Sheets(i)
' ваш код дополненный проставленными перед некоторыми обьектами точками.
End With
next
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.04.2010, 14:26   #3
Rok
 
Регистрация: 02.12.2008
Сообщений: 5
По умолчанию

Спасибо большое за ответ, но прочитал его раз двадцать, поискал, куда кавычки ставить, но так и не понял Я в этом деле так ювелирно не умею, только молотом из камня могу, кажется столько лишнего делаю, но пока как умею, всё равно лучше чем в ручную. Покажите на файле пожалуйста, надеюсь он корректно отобразит все.
Вложения
Тип файла: rar Anil_09_10.rar (485.0 Кб, 20 просмотров)
Rok вне форума Ответить с цитированием
Старый 22.04.2010, 16:31   #4
Rok
 
Регистрация: 02.12.2008
Сообщений: 5
Восклицание

Вроде догнал, но собака почему то на одном листе все 2 раза проделывает , помогите пожалуйста!!!!
Код:
Sub Макрос8()
'
' Макрос8 Макрос
'
' Сочетание клавиш: Ctrl+ь
'
    Range("A1").Select
    Application.Run ("Anil_09_10.xlsm!Макрос1")
    Application.Run ("Anil_09_10.xlsm!Макрос2")
    Application.Run ("Anil_09_10.xlsm!Макрос4")
    Range("D1").Select
    Application.Run ("Anil_09_10.xlsm!Макрос3")
    Columns("F:F").Select
    Application.Run ("PERSONAL.XLSB!цифры_в_месяца")
    Range("G2").Select
    Application.Run ("Anil_09_10.xlsm!Макрос5")
    Application.Run ("Anil_09_10.xlsm!Макрос6")
    Application.Run ("Anil_09_10.xlsm!Макрос7")
    With Sheets(1)
    End With
    For i = 1 To 2
    With Sheets(2)
 '
    Range("A1").Select
    Application.Run ("Anil_09_10.xlsm!Макрос1")
    Application.Run ("Anil_09_10.xlsm!Макрос2")
    Application.Run ("Anil_09_10.xlsm!Макрос4")
    Range("D1").Select
    Application.Run ("Anil_09_10.xlsm!Макрос3")
    Columns("F:F").Select
    Application.Run ("PERSONAL.XLSB!цифры_в_месяца")
    Range("G2").Select
    Application.Run ("Anil_09_10.xlsm!Макрос5")
    Application.Run ("Anil_09_10.xlsm!Макрос6")
    Application.Run ("Anil_09_10.xlsm!Макрос7")
    End With
    Next
    Columns("G:G").Select
    Selection.Style = "Comma"
    Range("G1").Select
End Sub

Последний раз редактировалось Rok; 22.04.2010 в 16:55.
Rok вне форума Ответить с цитированием
Старый 22.04.2010, 17:01   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
состоит из семи макросов поменьше
Это называется поменьше?
Каждый макрос можно сократить по объёму в 20 раз, при этом они будут работать в 10 раз быстрее.

Достаточно убрать все .Select, .Activate
и удалить строки, начинающиеся с ActiveWindow.

Кроме того, в случае с вашими макросами вариант с With Sheets(i) работать не будет до тех пор, пока вы не оптимизируете макросы.

Ну или используйте такую конструкцию (поскольку ваши макросы работают сейчас только с активным листом):

Код:
Sub Макрос8()
    Application.ScreenUpdating = False
    For i = 1 To 2
        With Sheets(2)
            .Select
            Range("A1").Select
            Макрос1
            Макрос2
            Макрос4
            Range("D1").Select
            Макрос3
            Columns("F:F").Select
            Application.Run ("PERSONAL.XLSB!цифры_в_месяца")
            Range("G2").Select
            Макрос5
            Макрос6
            Макрос7
        End With
    Next
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 26.04.2010, 08:55   #6
Rok
 
Регистрация: 02.12.2008
Сообщений: 5
По умолчанию благодарю

IgorGO, огромное спасибо еще в четверг все получилось!!!
EducatedFool, тоже огромное спасибо, что такого Фула проидюкетели, так намного чище и приятней смотрится, когда все лишнее уберешь, теперь заморочился везде лишнее убираю, еще бы мне научится сразу без этого делать!!!!
Rok вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В книге защищен каждый лист. Как быстро снять защиту со всех листов, а потом ее поставить опять? Катик7 Microsoft Office Excel 13 28.04.2011 16:02
Макрос для всех листов as-is Microsoft Office Excel 8 10.02.2011 21:15
Макрос записанный вручную для всех листов as-is Microsoft Office Excel 1 14.03.2010 14:35
Получить имена всех листов в книге Temnota Microsoft Office Excel 6 26.12.2009 07:36