Здравствуйте!
Есть программа. Сейчас она вычисляет результаты и как я понимаю сразу записывает значения в ячейку. При расчёте до 10-50 строк всё происходит быстро. При расчёте несколько тысяч строк этот процесс занимает длительное время.
Можно ли сначала результаты расчёта хранить где-то в памяти, а потом в конце вставить всё одним целым. Тогда это проблема ушла бы.
код программы
Есть программа. Сейчас она вычисляет результаты и как я понимаю сразу записывает значения в ячейку. При расчёте до 10-50 строк всё происходит быстро. При расчёте несколько тысяч строк этот процесс занимает длительное время.
Можно ли сначала результаты расчёта хранить где-то в памяти, а потом в конце вставить всё одним целым. Тогда это проблема ушла бы.
код программы
Код |
---|
Sub VSP_A2() ' ' Удалить Макрос ' Range("A5").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Range("A1").Select Dim source As Worksheet, calculation As Worksheet, result As Worksheet Dim LR As Long, LRR As Long Set source = ThisWorkbook.Sheets("Усилия") Set calculation = ThisWorkbook.Sheets("Проверка") Set result = ThisWorkbook.Sheets("Выносливость") With Application .ScreenUpdating = False .EnableEvents = False .DisplayAlerts = False End With LR = source.Columns("A").Find("END", Range("A1"), xlValues, xlWhole, xlByRows, xlPrevious).Row For i = 3 To LR calculation.Range("S49").Value = source.Range("A" & i) LRR = result.Cells(Rows.Count, 1).End(xlUp).Row + 1 result.Range("A" & LRR).Value = calculation.Range("S49").Value result.Range("B" & LRR).Value = calculation.Range("AK50").Value result.Range("C" & LRR).Value = calculation.Range("AN65").Value result.Range("D" & LRR).Value = calculation.Range("AN68").Value result.Range("E" & LRR).Value = calculation.Range("AN71").Value result.Range("F" & LRR).Value = calculation.Range("AN74").Value Next With Application .ScreenUpdating = True .EnableEvents = True .DisplayAlerts = True End With End Sub |