Моя рабочая книга содержит лист с формулами около 50 столбцов х 50 строк. Сам файл имеет около 500 КБ, без условий. форматирование, я по возможности избегал изменчивых функций. Когда я открываю книгу, использование памяти Excel составляет около 180 МБ, но когда я изменяю значение ячейки, которое пересчитывает таблицу, оно увеличивается до 2,8 ГБ. Единственный код VBA, который у меня есть:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim varray As Variant
Dim i As Long
ost = Cells(Rows.Count, "M").End(xlUp).Row
varray = Range("M1:M200").Value
If Not Intersect(Target, Columns(13)) Is Nothing Then 'If Not Intersect(Target, Range("A1:A3")) Is Nothing Then -- only act on changes to cells A1 to A3
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = UBound(varray, 1) To LBound(varray, 1) Step -1 'Go backwards
If i < 4 Then
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Exit Sub
End If
If VBA.Len(varray(i, 1)) > 0 Then
Range(Cells(4, "T"), Cells(4, "BD")).Copy Cells(i, "T")
Else
Range(Cells(i, "T"), Cells(i, "BD")).ClearContents
End If
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End If
End Sub
Я подозреваю, что этот код не идеален и делает беспорядок в памяти. Можно ли оптимизировать его, чтобы уменьшить использование памяти?