powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / оптимизация кода заполнения ячеек формулами
5 сообщений из 5, страница 1 из 1
оптимизация кода заполнения ячеек формулами
    #33566036
Bodrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как лучше переписать код чтобы при его выполнении не было мерцания экрана? и выполняется он очень медлено :(
Заранее спасибо !


Private period_d1d2 As Integer ' количество строчек
Private Const RowHeaderOffest As Integer = 8 ' смещение по горизонтали относительно первой строчки

Private Sub fillFormulas()

For Each k In sh_to.Range(sh_to.Cells(RowHeaderOffest + period_d1d2, 4), sh_to.Cells(RowHeaderOffest + period_d1d2, 7))
k.FormulaR1C1 = "=SUM(R[-" & period_d1d2 & "]C:R[-1]C)"
k.Font.Bold = True
Next k

i = 0
For D = d1 To d2 - 1
sh_to.Cells(i + RowHeaderOffest, 1).Value = d1 + i
sh_to.Cells(i + RowHeaderOffest, 2).FormulaR1C1 = "=VLOOKUP(RC[-1],eur!C1:C2,2)"
sh_to.Cells(i + RowHeaderOffest, 3).FormulaR1C1 = "=VLOOKUP(RC[-2],usd!C1:C2,2)"
sh_to.Cells(i + RowHeaderOffest, 7).FormulaR1C1 = "=SUM(RC[-3],RC[-1]/RC[-4],RC[-2]*RC[-5]/RC[-4])"
sh_to.Cells(i + RowHeaderOffest, 7).NumberFormat = "#,##0.00"
i = i + 1
Next D
sh_to.Cells(i + RowHeaderOffest, 7).NumberFormat = "#,##0.00"

End Sub
...
Рейтинг: 0 / 0
оптимизация кода заполнения ячеек формулами
    #33566127
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мерцание отменяется так.
Application.ScreenUpdating() = False - в начале функции
Application.ScreenUpdating() = True - в конце функции

По поводу ускорения работы.
Здесь, на мой взгляд, только одна строка замедляет работу:
Код: plaintext
ActiveSheet.Cells(i + RowHeaderOffest,  7 ).NumberFormat = "#,##0.00"
Нужно как можно меньше обращаться к формату конкретной ячейки. Желательно изменять сразу диапазон! Если он заранее не известен, то определять его в программе, а потом уже применять к нему формат ячеек!!!
...
Рейтинг: 0 / 0
оптимизация кода заполнения ячеек формулами
    #33566223
Bodrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
k-nike огромное спасибо макрос стал намного приятнее работать )
...
Рейтинг: 0 / 0
оптимизация кода заполнения ячеек формулами
    #33566248
JimOrange
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы при отключении ScreenUpdating включил что-нибудь в StatusBar, чтобы не вызвать эффект "зависания".

Application.ScreenUpdating = False
Application.Statusbar = "Ждите, идет обработка данных..."


Обнуляется StatusBar так же:

Application.Statusbar = False (Переводится в стандартную надпись "готово")
...
Рейтинг: 0 / 0
оптимизация кода заполнения ячеек формулами
    #33581466
Фотография 100g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще выруби автоматический пересчёт. Лучше после вписывания всех формул один раз все пересчитать:
Код: plaintext
1.
2.
3.
4.
Application.Calculation = xlManual
'...... вписываешь все формулы....
Calculate
Application.Calculation = xlAutomatic
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / оптимизация кода заполнения ячеек формулами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]