Я пытаюсь написать этот Sub, который обновляет таблицу (известного) определенного количества столбцов, но неопределенное количество строк. У меня есть значения в последней строке таблицы и в первом столбце таблицы, которые мне нужны для вычисления. Это мой код до сих пор: (Это работает только работает очень медленно)VBA Excel Sub работает очень медленно
Sub updateMySheets()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Dim x, y As Integer
'Looks dynamically for the largest row & column index
numrows = Range("C2", Range("C2").End(xlDown)).Rows.Count
numcols = Range("C2", Range("C2").End(xlToRight)).Columns.Count
Range("C2").Select
Dim discount, margin As Double
For x = 1 To numrows - 1
discount = ActiveCell.Offset(0, -1).Value
For y = 1 To numcols
margin = ActiveCell.Offset(numrows - x, y - 1).Value
If margin - discount <= 0.0001 Then
'Hier noch ggf. die Cell farbig anpassen
ActiveCell.Offset(0, y - 1).Value = ""
Else
ActiveCell.Offset(0, y - 1).Value = discount/(margin - discount)
End If
Next
ActiveCell.Offset(1, 0).Select
Next
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Помощь была бы оценена
Опишите, что вы пытаетесь достичь с помощью этого кода? Нам может быть проще, чем пытаться прочитать ваш код. – Marc
Как настроены ваши вложенные петли 'For', этот процесс выполняет действие для каждой ячейки в используемом диапазоне вашей книги. Вы можете оптимизировать, будучи более избирательным, над какими ячейками вы действительно должны выполнять вычисления и модификации. Другая вещь, которая может помочь в скорости, - использовать ActiveCell.Offset (1,0). Активировать' вместо 'ActiveCell.Offset (1,0). Выбрать'. Я обнаружил, что «выбор» вещей в Excel VBA медленнее, чем «активация» их (я понятия не имею, почему). – CactusCake
В первом столбце указаны потенциальные цены, а в последней строке - поля определенных продуктов. То, что я хочу рассчитать, - это увеличение объема, которое необходимо достичь, чтобы сохранить определенный запас. Формулы - это всего лишь эмпирическое правило, а не точное. но этого достаточно для моей цели. –