Мне нужна ваша помощь в оптимизации этого макроса в Excel. Я использую его для получения данных для этикеток для химиотерапевтических препаратов в нашей больнице. Макрос работает нормально сейчас, но иногда генерация занимает много времени. Это некоммерческий проект, и, конечно, я не получаю никакой помощи от руководства. Буду благодарен за любое предложение или помощь.
Dim i, iLastRow, d As Integer
Dim date1, date2 As Date
Dim oLastRow As ListRow
Dim srcRow As Range
Dim date_tabela As Date
Dim ile_dawek As Integer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.StatusBar = False
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
date1 = Worksheets("Program").Range("E2")
date2 = Worksheets("Program").Range("E3")
iLastRow = Worksheets("Program").ListObjects("Program").ListRows.Count + 6
For i = 7 To iLastRow
date_tabela = Cells(i, 4).Value
ile_dawek = Cells(i, 11).Value
If date_tabela >= date1 And date_tabela <= date2 Then
For d = 1 To ile_dawek
Set srcRow = Worksheets("Program").ListObjects("Program").Range.Range(Cells(i - 5, 1), Cells(i - 5, 36))
Set oLastRow = Worksheets("Etykiety").ListObjects("Etykiety_druk").ListRows.Add()
srcRow.Copy
oLastRow.Range.PasteSpecial xlPasteValuesAndNumberFormats
Application.CutCopyMode = False
Next
End If
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.StatusBar = True
Application.EnableEvents = True
ActiveWorkbook.Save
End Sub