Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2012, 21:52   #1
ymnuhj
Пользователь
 
Регистрация: 26.03.2012
Сообщений: 42
По умолчанию Ускорение макроса

Нужно было сделать процедуру что вставляла бы нужное кол-во строк сразу на листа. Сделать то получилось, однако три строчки по 8 секунд вставляются. Можно ли как то ускорить этот макрос?

Код:
Sub AddNewRaws()
Application.ScreenUpdating = False

n = 97 'номер строки куда вставлять
k = 7 'кол-во вставляемых строк

Sheets(1).Select
For i = n To n + k - 1
    Rows(i).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
     With Selection.Interior' удаляю заливку (форматирование копируется сверху и заливка всместе с ним)
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
Next i

Sheets(2).Select
For i = n To n + k - 1
    Rows(i).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
     With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
Next i

Sheets(3).Select
For i = n To n + k - 1
    Rows(i).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Next i

Application.ScreenUpdating = True
End Sub
Заранее спасибо
ymnuhj вне форума Ответить с цитированием
Старый 11.05.2012, 22:57   #2
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Код:
For i = n To n + k - 1
    Rows(i).Select
А зачем это всё? Почему нельзя вставить без цикла нужное количество строк?
Вот что записал макрорекордеря только чуток поправил)
Код:
    Rows("7:16").Insert Shift:=xlDown
    Selection.Interior.ColorIndex = xlNone
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 11.05.2012, 23:08   #3
ymnuhj
Пользователь
 
Регистрация: 26.03.2012
Сообщений: 42
По умолчанию

Да, это то что нужно. Спасибо
Только как засунуть две переменные под скобочки в raws (начальный и конечный номер промежутка), дабы каждый раз в ВБА редактор не лазить и не менять их в коде?
ymnuhj вне форума Ответить с цитированием
Старый 11.05.2012, 23:17   #4
ShAM66
Форумчанин
 
Регистрация: 24.02.2012
Сообщений: 160
По умолчанию

Код:
Rows(i & ":" & j)
ShAM66 вне форума Ответить с цитированием
Старый 12.05.2012, 00:13   #5
ymnuhj
Пользователь
 
Регистрация: 26.03.2012
Сообщений: 42
По умолчанию

Да,работает. Спасибо за новый прием.

Стало быстрей но все равно пару секунд приходится ждать. Можно конечно так и оставить, не смертельно.

Только вот все-таки интересно максимальная это скорость или нет?

Код:
Sub AddNewRaws()
Application.ScreenUpdating = False

k = 100 'number of raw
m = 3 'amount of raws to insert
n = k + m - 1 

Sheets(1).Rows(k & ":" & n).Insert Shift:=xlDown
Selection.Interior.ColorIndex = xlNone
   
Sheets(2).Rows(k & ":" & n).Insert Shift:=xlDown
Selection.Interior.ColorIndex = xlNone

Sheets(3).Rows(k & ":" & n).Insert Shift:=xlDown
Selection.Interior.ColorIndex = xlNone

Application.ScreenUpdating = True
End Sub
ymnuhj вне форума Ответить с цитированием
Старый 12.05.2012, 00:48   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Да,работает
И заливка удаляется?
Вот Вам еще пара приемов.
Код:
Sub AddNewRaws()
Application.ScreenUpdating = False

k = 100 'number of raw
m = 3 'amount of raws to insert
'n = k + m - 1

For n = 1 To 3
    Sheets(n).Rows(k).Resize(m).Insert Shift:=xlDown
    Sheets(n).Rows(k).Resize(m).Interior.ColorIndex = xlNone
Next

Application.ScreenUpdating = True
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ускорение работы макроса Cell Name. Foxx Microsoft Office Word 0 26.02.2012 21:38
Ускорение времени rinasmichael Win Api 3 10.11.2011 09:15
ускорение виндовс voland123454321 Windows 22 04.09.2010 12:16
Запуск макроса с параметрами из другого макроса Saladin Microsoft Office Excel 2 19.01.2009 09:43
ускорение компа Dark Energy Компьютерное железо 4 14.07.2008 20:15