Ребята, буду очень благодарен, если подскажете, в чем проблема с этим файлом. ПРЕДУПРЕЖДЕНИЕ: после исполнения макроса на листе "Звіт" у меня перестает работать то ли прокрутка листа, то ли ScreenUpdating (хотя, если верить vba, то вроде True) и сам файл закрыть получалось только с Ctrl+Alt+Del. Так что перед открытием, лучше закрыть свои другие файлы. Подробности вот в анимашке: Эта проблема у меня возникла дома на Excel2016, с Excel2010 на работе ничего подобного не было. И никак не могу ее решить... Притом, в перспективе этот файл использовать придется ежедневно, и возможно, не только мне. Надо определить причину проблемы как-то...
Вкратце, я сейчас разрабатываю систему учета дебиторки. После нажатия на кнопку "Отчет" должна запуститься юзерформа. После выбора параметров она их передает в Generate_Report и та, в свою очередь формируется отчет, обрабатывая данные других листов.
В оригинальном файле десятки тысяч строк, потому выполнение макроса без отключения ScreenUpdating и Calculation(Auto) ждать слишком долго. В отдельном модуле OptimizeCode есть соответствующие процедуры. Может с ним, что не так? Хотя этот модуль от проекта к проекту копирую, проблем раньше не было.
Никто не сталкивался с чем-то подобным? Где я допустил ошибку? Связано ли это с юзерформой как-то? Если можете, отпишите, у всех ли подобная проблема с этим файлом наблюдается (и версию офиса, пожалуйста).
Ребята, буду очень благодарен, если подскажете, в чем проблема с этим файлом. ПРЕДУПРЕЖДЕНИЕ: после исполнения макроса на листе "Звіт" у меня перестает работать то ли прокрутка листа, то ли ScreenUpdating (хотя, если верить vba, то вроде True) и сам файл закрыть получалось только с Ctrl+Alt+Del. Так что перед открытием, лучше закрыть свои другие файлы. Подробности вот в анимашке: Эта проблема у меня возникла дома на Excel2016, с Excel2010 на работе ничего подобного не было. И никак не могу ее решить... Притом, в перспективе этот файл использовать придется ежедневно, и возможно, не только мне. Надо определить причину проблемы как-то...
Вкратце, я сейчас разрабатываю систему учета дебиторки. После нажатия на кнопку "Отчет" должна запуститься юзерформа. После выбора параметров она их передает в Generate_Report и та, в свою очередь формируется отчет, обрабатывая данные других листов.
В оригинальном файле десятки тысяч строк, потому выполнение макроса без отключения ScreenUpdating и Calculation(Auto) ждать слишком долго. В отдельном модуле OptimizeCode есть соответствующие процедуры. Может с ним, что не так? Хотя этот модуль от проекта к проекту копирую, проблем раньше не было.
Никто не сталкивался с чем-то подобным? Где я допустил ошибку? Связано ли это с юзерформой как-то? Если можете, отпишите, у всех ли подобная проблема с этим файлом наблюдается (и версию офиса, пожалуйста).Невилл
[/vba] Иногда бывает макрос не доходит до конца, ошибки там всякие и так далее и обновление экрана не включается. Сам мучался. Потом как только заглючит таким образом жму кнопку - обновлять экран. Если дело в этом то допиши в конец программы оператор [vba]
Код
Аpplication.ScreenUpdating = True
[/vba]
А если отдельно сделать кнопку с процедурой [vba]
Код
Sub ScreenUpdating()
Application.ScreenUpdating = True
End Sub
[/vba] Иногда бывает макрос не доходит до конца, ошибки там всякие и так далее и обновление экрана не включается. Сам мучался. Потом как только заглючит таким образом жму кнопку - обновлять экран. Если дело в этом то допиши в конец программы оператор [vba]
У автора и так эта процедура отдельная. И нет смысла делать еще и кнопку. Есть волшебная клавишка F9 и волшебное слово Stop если уж совсем извращаться. Все это применимо к процедуре: [vba]
Код
Sub OptimizeCode_End() Application.EnableEvents = True Stop Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Sub
[/vba] У меня все отрабатывает без запинки, но на 2010. 2016 нет и ставить не планирую, поэтому помочь видимо, не смогу.
У автора и так эта процедура отдельная. И нет смысла делать еще и кнопку. Есть волшебная клавишка F9 и волшебное слово Stop если уж совсем извращаться. Все это применимо к процедуре: [vba]
Код
Sub OptimizeCode_End() Application.EnableEvents = True Stop Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Sub
[/vba] У меня все отрабатывает без запинки, но на 2010. 2016 нет и ставить не планирую, поэтому помочь видимо, не смогу. KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Т.е. у Вас 2016 и ситуации описанной автором, не возникает? Тогда может есть смысл говорить(возможно) о некорректной установке Офиса у автора? Стоит подождать других форумчан-обладателей 2016. Ребят пожалуйста, подтвердите или опровергните наличие глюка, описанного автором.
Т.е. у Вас 2016 и ситуации описанной автором, не возникает? Тогда может есть смысл говорить(возможно) о некорректной установке Офиса у автора? Стоит подождать других форумчан-обладателей 2016. Ребят пожалуйста, подтвердите или опровергните наличие глюка, описанного автором.KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Спасибо всем, кто попробовал файл. Значит, скорее всего какой-то конфликт с 2016 офисом. Хотя, имхо, в таком странном месте, что не понимаю совсем. И реально этот "глюк" вызывается все же активацией листа. Все уже перепробовал, что знал. Безуспешно...
KuklP, попробовал Application.Goto и в конце макроса формы, и потом перенес его в основной модуль. Оба раза повторился тот же глюк, что на анимации. Еще попробовал set wksReport = ThisWorkbook..., тоже без разницы. Имя листа писал латиницей, удалял его...
fairylive, а не могли бы Вы подсказать, что за ошибку выдает файл и в каком месте? Был бы очень признателен за скриншот или краткое описание.
Спасибо всем, кто попробовал файл. Значит, скорее всего какой-то конфликт с 2016 офисом. Хотя, имхо, в таком странном месте, что не понимаю совсем. И реально этот "глюк" вызывается все же активацией листа. Все уже перепробовал, что знал. Безуспешно...
KuklP, попробовал Application.Goto и в конце макроса формы, и потом перенес его в основной модуль. Оба раза повторился тот же глюк, что на анимации. Еще попробовал set wksReport = ThisWorkbook..., тоже без разницы. Имя листа писал латиницей, удалял его...
fairylive, а не могли бы Вы подсказать, что за ошибку выдает файл и в каком месте? Был бы очень признателен за скриншот или краткое описание.Невилл
Sub CommandButton1_Click() ThisWorkbook.Sheets("Звіт").Select ReportMaster.Show End Sub
[/vba] Выходит, что проблема проявляется, если активировать, выделять или переходить на лист в процессе формирования отчета или выхода из юзерформы... А вот, если сделать это перед запуском ЮФ, то все норм? Ну, ок
P.S. Пока такой костыль прикрутил: [vba]
Код
Sub CommandButton1_Click() ThisWorkbook.Sheets("Звіт").Select ReportMaster.Show End Sub
[/vba] Выходит, что проблема проявляется, если активировать, выделять или переходить на лист в процессе формирования отчета или выхода из юзерформы... А вот, если сделать это перед запуском ЮФ, то все норм? Ну, ок Невилл
Сообщение отредактировал Невилл - Суббота, 12.11.2016, 20:55
Невилл, опиши последовательность действий которую надо сделать. Я просто открыл файл (предварительно разблокировав его в свойствах) и нажал на кнопку, после чего появляется форма. Там что надо выбирать? Я просто жму кнопку опять. Что должно произойти? На анимации не очень видны первые действия. Вобщем вот снимки экрана. PS пока делал снимки разобрался в чем дело. Ошибки у меня возникали так как у меня нет таких стилей - Заголовок 1, Заголовок 2 и Примечание. Заменил их на те что у меня есть Обычный 2. Программа стала выполняться. Глюк подтверждаю. И как говорил раньше он лечится макросом. У меня этот макрос на отдельной кнопке на моей вкладке с моими макросами [vba]
Код
Sub ScreenUpdating()
Application.ScreenUpdating = True
End Sub
[/vba] Просто вставь в самую последнюю процедуру в конец Application.ScreenUpdating = True Я не знаю какая последняя. Поэтому не проверял сработает или нет. Но по идее должно.
Невилл, опиши последовательность действий которую надо сделать. Я просто открыл файл (предварительно разблокировав его в свойствах) и нажал на кнопку, после чего появляется форма. Там что надо выбирать? Я просто жму кнопку опять. Что должно произойти? На анимации не очень видны первые действия. Вобщем вот снимки экрана. PS пока делал снимки разобрался в чем дело. Ошибки у меня возникали так как у меня нет таких стилей - Заголовок 1, Заголовок 2 и Примечание. Заменил их на те что у меня есть Обычный 2. Программа стала выполняться. Глюк подтверждаю. И как говорил раньше он лечится макросом. У меня этот макрос на отдельной кнопке на моей вкладке с моими макросами [vba]
Код
Sub ScreenUpdating()
Application.ScreenUpdating = True
End Sub
[/vba] Просто вставь в самую последнюю процедуру в конец Application.ScreenUpdating = True Я не знаю какая последняя. Поэтому не проверял сработает или нет. Но по идее должно.fairylive
fairylive, ScreenUpdating не помогло, увы. У меня в коде он, к слову, как раз в конце и использовался. Я понимаю, в чем суть, но такое решение мне не подходит (лишние кнопки другие пользователи нажимать не захотят, да и должно оно работать само). Как сказал wild pig, ручной переход между листами тоже решает проблема. Еще если зайти в VBA и выйти, экран тоже раздупляется.
Спасибо за подсказку по стилям. Честно сказать, думал, что стили вместе с файлом сохраняются, а не зависят от версии офиса. Попробую разобраться, как их зафиксировать точно.
UPD: Если не затруднит, проверьте еще разок мой файл (на 2013 и 2016), пожалуйста. Попробовал стили прописать, как советовали на одном западном форуме, а активацию листа перенес до выполнения самого макроса. У меня на 2016 уже работает, но уверенность пошатнулась уже
fairylive, ScreenUpdating не помогло, увы. У меня в коде он, к слову, как раз в конце и использовался. Я понимаю, в чем суть, но такое решение мне не подходит (лишние кнопки другие пользователи нажимать не захотят, да и должно оно работать само). Как сказал wild pig, ручной переход между листами тоже решает проблема. Еще если зайти в VBA и выйти, экран тоже раздупляется.
Спасибо за подсказку по стилям. Честно сказать, думал, что стили вместе с файлом сохраняются, а не зависят от версии офиса. Попробую разобраться, как их зафиксировать точно.
UPD: Если не затруднит, проверьте еще разок мой файл (на 2013 и 2016), пожалуйста. Попробовал стили прописать, как советовали на одном западном форуме, а активацию листа перенес до выполнения самого макроса. У меня на 2016 уже работает, но уверенность пошатнулась уже Невилл
Невилл, Вы можете еще в чисто исследовательских целях скопировать данные в новый файл, пересоздать там формы и скопировать туда код. Бывало и уже не раз, в том числе на этом форуме, что виной был глючный файл. После вышеуказанных действий проблема исчезала. Только не копируйте листы и формы, а именно пересоздайте.
Невилл, Вы можете еще в чисто исследовательских целях скопировать данные в новый файл, пересоздать там формы и скопировать туда код. Бывало и уже не раз, в том числе на этом форуме, что виной был глючный файл. После вышеуказанных действий проблема исчезала. Только не копируйте листы и формы, а именно пересоздайте.KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Невилл, Про кнопку я всего лишь говорил что это проверка. У меня она решала проблему. Значит надо подправить код в нужном месте. Проверил последний файл. Всё чётко. Без глюков и ошибок.
Невилл, Про кнопку я всего лишь говорил что это проверка. У меня она решала проблему. Значит надо подправить код в нужном месте. Проверил последний файл. Всё чётко. Без глюков и ошибок.fairylive
Понимаю, что прошло два года, но сам столкнулся с такой же проблемой и очень долго искал ответ. Возможно, кому-нибудь поможет: необходимо установить свойство формы Showmodal = False, после этого страница нормально работает и скроллится.
Понимаю, что прошло два года, но сам столкнулся с такой же проблемой и очень долго искал ответ. Возможно, кому-нибудь поможет: необходимо установить свойство формы Showmodal = False, после этого страница нормально работает и скроллится.HeinzBr