Шпаргалка по VBA в Excel

Примеры написания кода, ускорение расчетов, редко использующиеся возможности

Функция с необязательным параметром

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»