Доброго дня ! Бродил по форуму наткнулся на чужой образец. Он очень близок к моему случаю. При нажатии кнопки "Заполнить" на каждом листе данные заполняются. У меня таких листов около 70 . Можно ли Кнопочку перенести на лист /Сбор/ при её нажатии данные с этого листа заполняли все листы книги. Т.Е. все тоже самое только не на каждом листе заполнять, а на одном все.
Доброго дня ! Бродил по форуму наткнулся на чужой образец. Он очень близок к моему случаю. При нажатии кнопки "Заполнить" на каждом листе данные заполняются. У меня таких листов около 70 . Можно ли Кнопочку перенести на лист /Сбор/ при её нажатии данные с этого листа заполняли все листы книги. Т.Е. все тоже самое только не на каждом листе заполнять, а на одном все.ZamoK
ZamoK, посмотрите такой вариант. Кнопки и макрос, что уже были, остались, они работают, как работали. Впрочем, кнопки можно удалить. На сводном листе дополнительная кнопка с процедурой по щелчку, для каждого листа выполняет старую процедуру, так что старый макрос удалять нельзя.
ZamoK, посмотрите такой вариант. Кнопки и макрос, что уже были, остались, они работают, как работали. Впрочем, кнопки можно удалить. На сводном листе дополнительная кнопка с процедурой по щелчку, для каждого листа выполняет старую процедуру, так что старый макрос удалять нельзя.alex1248
alex1248, UltrasRW, Спасибо огромное Вариант alex1248, полностью устраивает, вариант UltrasRW, чтото со столбцами случилось , но все ровно спасибо
alex1248, UltrasRW, Спасибо огромное Вариант alex1248, полностью устраивает, вариант UltrasRW, чтото со столбцами случилось , но все ровно спасибоZamoK
Да вот такой маленький вопрос. Процедура занимает очень длительное время в моём файле, я так думаю из-за большого количества формул на моих листак, и при подстановке данных все пересчитывается. Можно ли отключить пересчёт формул на момент подстановки данных, а по завершении пересчитать. Обновление экрана[vba]
[/vba] я уже отключил. помогло но не сильно, или это и есть пересчет формул.
Да вот такой маленький вопрос. Процедура занимает очень длительное время в моём файле, я так думаю из-за большого количества формул на моих листак, и при подстановке данных все пересчитывается. Можно ли отключить пересчёт формул на момент подстановки данных, а по завершении пересчитать. Обновление экрана[vba]
"Очень долго" - это сколько? Час? 10 минут? Минута? Формулы в листах у вас не должны влиять на "Свод", если в сводном листе нет формул (и на сводный лист ничего не ссылается). Если данных всё же "очень много" (назовите хотя бы порядок) - можно вместо копирования попробовать использовать запросы к таблицам данных (+выгрузка на лист из рекордсета идёт как из массива), это будет быстрее.
ОБновление экрана - это [vba]
Код
Application.ScreenUpdationg = False | True
[/vba]но он в примерах и так уже используется.
"Очень долго" - это сколько? Час? 10 минут? Минута? Формулы в листах у вас не должны влиять на "Свод", если в сводном листе нет формул (и на сводный лист ничего не ссылается). Если данных всё же "очень много" (назовите хотя бы порядок) - можно вместо копирования попробовать использовать запросы к таблицам данных (+выгрузка на лист из рекордсета идёт как из массива), это будет быстрее.AndreTM
Формулы в листах у вас не должны влиять на "Свод", если в сводном листе нет формул (и на сводный лист ничего не ссылается).
Формулы в пошаговом режиме действительно не считают, и на свод ничего не ссылается и формул там нет. Просто Свод порядка 200-500 строк и столбцов с данными не 6 как в образце, а 26 столбцов. Получается 4600 запросов на каждый лист, а листов в книге каждый месяц разное 25-35 листов. короче за одно нажатие 140 000 запросов (как минимум) + копирование данных оно тоже тормозит процесс.
Формулы в листах у вас не должны влиять на "Свод", если в сводном листе нет формул (и на сводный лист ничего не ссылается).
Формулы в пошаговом режиме действительно не считают, и на свод ничего не ссылается и формул там нет. Просто Свод порядка 200-500 строк и столбцов с данными не 6 как в образце, а 26 столбцов. Получается 4600 запросов на каждый лист, а листов в книге каждый месяц разное 25-35 листов. короче за одно нажатие 140 000 запросов (как минимум) + копирование данных оно тоже тормозит процесс.ZamoK
Я не Гуру, но стремлюсь!
Сообщение отредактировал ZamoK - Четверг, 30.10.2014, 08:31
Да ещё вопрос: в этих примерах можно исключить ещё один лист кроме "Сбора" из обработки - например Лист20
И можно ли выводить на экран сообщение какой лист в данный момент обрабатывается т.е. если зависнет хоть знать на каком листе циклится, где копать? и вывести шкалу прогрессии процедуры
Да ещё вопрос: в этих примерах можно исключить ещё один лист кроме "Сбора" из обработки - например Лист20
И можно ли выводить на экран сообщение какой лист в данный момент обрабатывается т.е. если зависнет хоть знать на каком листе циклится, где копать? и вывести шкалу прогрессии процедурыZamoK
ZamoK, добавил исключение Лист20 и сообщение о переходе к очередному листу. Про шкалу не знаю. Если только в сообщение добавить "Уже обработано < > листов"? По поводу отключения пересчета тоже не знаю, но почему вы сами не попробуете? Можно проверить с книгой меньшего объема, сразу видно должно быть.
ZamoK, добавил исключение Лист20 и сообщение о переходе к очередному листу. Про шкалу не знаю. Если только в сообщение добавить "Уже обработано < > листов"? По поводу отключения пересчета тоже не знаю, но почему вы сами не попробуете? Можно проверить с книгой меньшего объема, сразу видно должно быть.alex1248
[/vba] таким образом вы сможете видеть статус обработки (см. вложение - нет возможности загрузить на хостинг). В статус бар обычно выкидываю для себя полезную информацию по прогрессу и т.д., в примере есть - посмотрите
имхо выкидывать сообщение о переходе на другой лист не совсем оптимально, если мы изначально знаем, что в книге ~70 листов.
[/vba] таким образом вы сможете видеть статус обработки (см. вложение - нет возможности загрузить на хостинг). В статус бар обычно выкидываю для себя полезную информацию по прогрессу и т.д., в примере есть - посмотритеUltrasRW
Убрал пересчет и обновление экрана на самый конец и все стало на много быстрее получилось так [vba]
Код
A = A + 1 End If Next X
End With End If Range("C1").Select Next ws Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.StatusBar = Null MsgBox "Данные заполнены!", , "" End Sub
[/vba] Тут бы ещё дописать чтоб по завершении был открыт лист Сбор
Убрал пересчет и обновление экрана на самый конец и все стало на много быстрее получилось так [vba]
Код
A = A + 1 End If Next X
End With End If Range("C1").Select Next ws Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.StatusBar = Null MsgBox "Данные заполнены!", , "" End Sub
[/vba] Тут бы ещё дописать чтоб по завершении был открыт лист СборZamoK
Я не Гуру, но стремлюсь!
Сообщение отредактировал ZamoK - Четверг, 30.10.2014, 12:44