
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
26.02.2006, 16:30:21
|
|||
|---|---|---|---|
|
|||
оптимизация кода заполнения ячеек формулами |
|||
|
#18+
Как лучше переписать код чтобы при его выполнении не было мерцания экрана? и выполняется он очень медлено :( Заранее спасибо ! 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.02.2006, 17:21:41
|
|||
|---|---|---|---|
оптимизация кода заполнения ячеек формулами |
|||
|
#18+
Мерцание отменяется так. Application.ScreenUpdating() = False - в начале функции Application.ScreenUpdating() = True - в конце функции По поводу ускорения работы. Здесь, на мой взгляд, только одна строка замедляет работу: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.02.2006, 18:13:16
|
|||
|---|---|---|---|
|
|||
оптимизация кода заполнения ячеек формулами |
|||
|
#18+
k-nike огромное спасибо макрос стал намного приятнее работать ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.02.2006, 18:23:57
|
|||
|---|---|---|---|
|
|||
оптимизация кода заполнения ячеек формулами |
|||
|
#18+
Я бы при отключении ScreenUpdating включил что-нибудь в StatusBar, чтобы не вызвать эффект "зависания". Application.ScreenUpdating = False Application.Statusbar = "Ждите, идет обработка данных..." Обнуляется StatusBar так же: Application.Statusbar = False (Переводится в стандартную надпись "готово") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.03.2006, 22:08:12
|
|||
|---|---|---|---|
оптимизация кода заполнения ячеек формулами |
|||
|
#18+
Еще выруби автоматический пересчёт. Лучше после вписывания всех формул один раз все пересчитать: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=svc&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
4ms |
get forum list: |
16ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
21ms |
get tp. blocked users: |
1ms |
| others: | 666ms |
| total: | 778ms |

| 0 / 0 |
