Как минимизировать время выполнения моего кода? - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть вкладка шаблона, которую мне нужно заполнить для каждого номера из списка.Мой код ниже в основном копирует вкладку шаблона для каждого номера в списке и переименовывает его в соответствии с номером из списка.Например, если в списке существует число 1000, то будет создана новая вкладка (идентичная вкладке шаблона), которая называется 1000 и содержит информацию об идентификаторе 1000. Проблема, с которой я сталкиваюсь, заключается в том, что для выполнения кода требуется ДЛИННОЕ время,Список содержит около 300 номеров и занимает около 10 минут.

Мой код очень прост (извиняюсь, но я не обладаю большим опытом работы с VBA).Кроме того, он вызывает другую подпрограмму, которая также очень проста.

Не могли бы вы сообщить мне, что потенциально может минимизировать время работы?

Большое спасибо за ваше время заранее.

Sub NEW_ID()

Application.ScreenUpdating = False
Application.DisplayStatusBar = False


Dim no_loans As Long
Dim MyRange As Range
no_ids = Sheets("List of IDs").Range("C2")

Set MyRange = Sheets("List of IDs").Range("D3:D1000")

For i = 1 To no_ids

    Sheets("Template").Copy after:=Worksheets(Sheets.Count)

    ActiveSheet.Name = MyRange(i)

    ActiveSheet.Range("L1").Value = MyRange(i)

   Call new_collateral


Next i


Application.ScreenUpdating = True
Application.DisplayStatusBar = True

End Sub




Sub new_collateral()


Application.ScreenUpdating = False
Application.DisplayStatusBar = False

Dim coll As Long
Dim LastRow As Long

coll = ActiveSheet.Range("N1")

For i = 1 To coll - 1

    LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

    ActiveSheet.Range("A184:J245").Copy

    ActiveSheet.Range("A" & LastRow).PasteSpecial

    ActiveSheet.Range("L" & LastRow).Value = i + 1

Next i


Application.ScreenUpdating = True
Application.DisplayStatusBar = True

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...