Я писал макрос, который вставляет новую строку в праздничный лист для нового рекрута, теперь он отлично работает, но теперь он останавливается и занимает огромное количество времени, чтобы вставьте новую строку. Вот пораженный код:Макро работает очень медленно
For f = 1 To Worksheets.Count - 1
Worksheets(f).Select
Range("A1").Select
If Worksheets(f).Name = "FLEXI" Then
Range("A1").Select
N = Range("A2").Value
Range("A" & NewRow).Select
Selection.EntireRow.Insert
Range("A" & NewRow + N + 1).Select
Selection.EntireRow.Insert
GoTo flexidivert
End If
Range("A" & NewRow).Select
Selection.EntireRow.Insert
flexidivert:
Next f
Я ScreenUpdating инвалидов, enableevents инвалидов и расчеты в ручной режим, так что обычные подозреваемые не на работе здесь. Это такая простая процедура, я не могу понять, почему для вычисления требуется несколько минут. NewRow - это строка, которую нужно вставить, и workheets.count = 5, чтобы прокручивалось огромное количество.
Использование .select действительно С.Л. ows вниз код ... См. эту ссылку http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select/10718179#10718179 –
Почему вам нужно прокручивать листы, если вы знаете name, почему бы просто не ссылаться на рабочий лист напрямую и не выбирать его. –
Кроме того, я думаю, что каждый раз, когда вы вставляете строку, механизм расчета Excels проверяет все ячейки, и все имена диапазонов переопределены ... поэтому, если у вас есть какие-либо формулы, сначала отключите автоматический расчет –