Здрасте. Есть макрос (ниже). Создал я его на великом весеннем карантине 2020 путем обычной записи действий. С тех пор этот макрос отрабатывал раз по 100-150 ежесуточно. Работал мгновенно. В середине мая 2021 вдруг начал приостанавливаться. Выяснил, что замирает почти в самом начале на операции Select. Я знаю, что все эти Active и Select это мусорно и все такое, но макрос год работал со скоростью пули, и вдруг (а именно после майского обновления Windows и Office) начал фризить. Причем это происходит только в Office 2013 и 2016. В 2007-2010 (на них не приходят обновления) все летает как прежде.
Вот макрос. Затык происходит на синих строках, выделяет диапазон и останавливается. ТОЛЬКО в синим коде. Либо в строке 20, либо 22. Далее никогда ничего не виснет. Висит секунд 15-20 и потом отрабатывается мгновенно. Обновление экрана я закоментил с целью увидеть место фриза.
1. как вы уже сами поняли, что дело не в макросе, а в чём-то другом (файле, данных, обновлениях и т.д.) 2. вы видите кракозябли в вашем коде? Вот они 'Âêëþ÷àåì îòñëåæèâàíèå ñîáûòèé - это говорит о том, что у вас был выбран Английский язык в раскладке Windows перед тем, как вы скопировали код из редактора VBE. Вам надо зайти снова в ваш код, переключить раскладку Windows на русский язык (там где часики в правом нижнем углу монитора), и снова скопировать код и заменить ваш старый код на новый в вашем первом сообщении 3. Код можно выкладывать в приложенном файле с небольшим примером на листе.
это там просто комменты, типа Отключаем обновление экрана или Отключаем автоматический пересчет - на макрос никак не влияет, для себя писал, чтоб помнить, что за строка
Уже пытался, если заменить все, то получается такой замедленный мультик, вокруг диапазона появляется пунктирчик, потом очищается, пунктирчик пропадает, появляется в следующем диапазоне и так в каждой строчке, что в итоге становится еще дольше. На обработку 20 строк ушло 51 сек
Вот я приложу файл, куда внес эту хитрую табличку. Надо просто нажать Ctrl+W или запустить макрос volten_betcity_3. Ждать, пока курсор не попадет в F1. Вот этот самый файл до мая работал молниеносно. За год в нем ничего не менялось. В Excel 2007-2010 вот этот приложенный файл выполняет все мгновенно!
В начале кода попробуйте раскомментировать. Только не забудьте в конце включить всё назад. И как правильно заметил БМВ, в 3 сообщении, постарайтесь максимально избавиться от Selectов.
Буквально вчера вечером снес 8.1 и установил 10. Вообще комп работает только днем. Проблема такая же и на ноуте, где 8.1 home
Скрытый текст
Вот видео С прорисовкой экрана
и Без Прорисовки
Цитата
msi2102 написал: В начале кода попробуйте раскомментировать.
Оно было расскомментированно. Закомментировал с целью увидеть место фриза. Я понимаю аллергию у всех на Select, но файл отработал молниеносно тысячи раз и перестал работать вдруг, по щелчку. В 2 часа ночи он работал. Потом в 11 утра обновилась винда и офис ежемесячным обновлением и все. Я понимаю, что Select это не кошерно или не красиво, но так сильно влиять на скорость такого маленького макроса это не может. У меня в файле не один этот макрос (исходные таблички из разных источников, под каждый вид свой макрос), однако остальные тоже содержат Select и в еще большем количестве и это не мешает.
вот поэтому я в своём сообщении выше и ничего не стал писать ТС'у про Select, раз он сказал, что до этого макрос быстро работал, а после обновления стал тормозить. Избавиться от Select'ов конечно желательно, но проблема видно не в них, раз до этого всё работало быстро. И предложил ТС'у выложить код в файле, чтобы за него убрать все Select'ы в его коде. Я не хотел брать его код с кракозяблями, копировать себе в файл, редактировать его и снова давать его ТС. Так как ему надо будет копировать мой код с его кракозяблями и вставлять в свой файл.
В общем проблема решена. Помогли российские враги, британец из городка Телфорд. Нашел через телеграм. Короче, в мае микрософты прекратили поддержку очередного ряда процессоров. Мой Intel G850 попал в этот ряд. Теперь глупый Ексель при расчетах создает какую-то там виртуализацию для обращения к процессору, а для этой виртуализации требуется четкое, а не бездумное использование всех этих отключалок/включалок. Короче. Сначала отключаем прорисовку экрана, потом отключаем отслеживание событий, именно так, а не наоборот. В конце включаем отслеживание событий, а потом прорисовку экрана, именно так, а не наоборот. По утверждению британа возня с Select в макросах менее 1000 строк для 32бит и 5-10 тыс строк для 64бит при обычном процессоре Celeron 1,1Ггц и минимальном кэше 1 Мб никакого влияние на скорость выполнения макроса не оказывает. В общем все снова летает.
rasdmr написал: Сначала отключаем прорисовку экрана, потом отключаем отслеживание событий, именно так, а не наоборот
Забавно, если это правда... Теперь со следующими обновлениями и версиями нужно нужно быть готовым и ждать предписаний о строго определенном порядке совместного применения стандартных функций - сначала финансовые, только после них текстовые, после текстовых дата и время и только потом логические и т.д. ... ? А выход только в приобретении нового железа?
rasdmr написал: Сначала отключаем прорисовку экрана, потом отключаем отслеживание событий, именно так, а не наоборот
В 6 сообщении я Вам писал чтобы Вы это сделали. Последовательность именно та которую Вы описывали выше (хотя не уверен, что последовательность влияет на скорость, возможно это и так). И вы писали, что закомментировали их специально. Не понимаю почему нужно было ждать ответа из-за бугра, чтобы вернуть всё как было И к тому же не понятно, почему остальные макросы у Вас продолжали летать. Не может же быть, чтобы у них был тот же Intel G850, только немного лучше
rasdmr написал: По утверждению британа возня с Select в макросах менее 1000 строк для 32бит и 5-10 тыс строк для 64бит при обычном процессоре Celeron 1,1Ггц и минимальном кэше 1 Мб никакого влияние на скорость выполнения макроса не оказывает.
Ну в британии много чего не оказывает. Про SELECT я писал прежде всего по тому, что портянку бессмысленных операций смотреть даже трудно. а не по тому что вдруг все залетает. Я конечно грешил на данные, вдруг что поменялось иии. но всегда искать надо корневые изменения, которые могут влиять на приложения.