с наступающим ВСЕХ!!!
Подскажите, пож-та, просто приспичило )))
Задача следующая: Диапазон "А7:G22". В ячейки А7:А22 вставляется список, причем значения могут занимать все ячейки в диапазоне А7:А22, а может быть любое количество заполненных ячеек. Далее необходимо объединить в каждой строке ячейки А(n):G(n) если в ячейках А7:A22 находится текст (например, объединить А7:G7, А8:G8, A9:G9). И, соответственно, в каждом уже объединенном диапазоне установить высоту строки, например, RowHeight = 25. Пустые же строки не трогать (не объединять и не менять высоту строки). Но здесь то у меня все и начинается:
весь описанный процесс выполняется медленно, наблюдаем как бегает по диапазонам, объединяет их, меняет высоту строки. Да еще и 8 раз пробегает по всему диапазону "А7:G22" от начала до конца. При этом данные и формат строк реально меняются только в первый раз .
кроме того, в диапазонах, для которых ячейка А(n) пустая, также происходлит объединение (A10:G10, например, но в A10 нет текста). Конечно это не смертельно, но все-таки замедляет работу.
Пож-та, если есть у кого светлые мысли в голове подскажите ))))
Премного Благодарна ))))
Увеличить быстродейстие при изменении формата ячеек в VBA
Модератор: Naeel Maqsudov
Если вы видете как выделяеются ячейки, то скорее всего в вышем макросе используются метод .Select и диапозон Selection. Старайтесь ими не пользовать, т.е обращайтесь на прямую на сам диапозон прим. Range("A7:A22").Merge
Также следующие команды помогут вам ускорить работу макросов.
Application.ScreenUpdating = False ' довьте в начале форматирования, не забудьте присвоить значение True в конце скрипта.
Application.EnableEvents =False довьте в начале форматирования, ВАЖНО!!! не забудьте присвоить значение True в конце скрипта.
Application.Calculation=xlCalculationManual для отключения автоматического вычисления. В конце макроса присвоить значение Application.Calculation=xlCalculationAutomatic
Также следующие команды помогут вам ускорить работу макросов.
Application.ScreenUpdating = False ' довьте в начале форматирования, не забудьте присвоить значение True в конце скрипта.
Application.EnableEvents =False довьте в начале форматирования, ВАЖНО!!! не забудьте присвоить значение True в конце скрипта.
Application.Calculation=xlCalculationManual для отключения автоматического вычисления. В конце макроса присвоить значение Application.Calculation=xlCalculationAutomatic