Примеры написания кода, ускорение расчетов, редко использующиеся возможности
Функция с необязательным параметром
Function GenerateRange( iStart, iEnd, Optional iStep ) Dim useStep As Integer If IsMissing( iStep ) Then useStep = 1 Else useStep = iStep End If End Function
Функция с необязательным параметром, принимающим значение по умолчанию
Function GenerateRange2( iStart, iEnd, Optional iStep = 1 ) End Function
Функции с переменным числом параметров
Function MySumm( ParamArray args() As Variant ) MySumm = 0 For Each arg In args MySumm = MySumm + arg Next arg End Function
Функция возвращающая массив
Function seq( Count ) Dim R() As Integer ReDim R(1 To Count) For i = 1 To Count R(i) = i Next i seq = R End Function
При применении функции в ячейке — будет показано только первое значение, для отображения всех: перейти в строку формул, и нажать «F9». После нажатия, возвращенные значения будут преобразованы в «последовательности значений».
В случае применения в качестве аргумента для вызова функций ввод формулы стоит завершать нажатием «Ctrl» + «Shift» + «Enter», а не «Enter», иначе будет использовано первое возвращенное значение, а не массив.
Автоматический пересчет функции
Для пересчета в теле функции следует прописать: Application.Volatile True
Function SomeFunction() Application.Volatile True End Function
Пересчет всех значений
Нажать «Ctrl» + «Alt» + «F9»
Ускорение расчетов, использующих значения из листа
Ускорение достигается за счет выключения обновления экрана
Application.ScreenUpdating = False
Прерывание выполняющегося кода
Нажать «Ctrl» + «Break»