Пользовательские функции в VBA
Бывает, что некоторые куски кода повторяются в разных макросах. Так, часто приходится находить последнюю строку с данными или копировать данные из одного и того же места. Такие куски полезно заносить в функции, чтобы не повторять один и тот же код много раз (о принципе don't repeat yourself можно и нужно почитать на вики и хабре ). Функции - это кусок кода, вызвать который ты можешь, просто запустив функцию по её названию.
Функция может иметь параметр - переменную, значение которой ты будешь устанавливать при запуске функции. Например, ты можешь записать функцию копирования с листа определенных ячеек, а название листа прописать как параметр. Тогда ты сможешь использовать одну и ту же функцию для разных листов.
Функция записывается отдельно от макроса следующим синтаксисом (где x,y и z - параметры функции):
Function myf (x,y,z)
тело функции
End Function
Тело функции ничем не отличается от тела обычного макроса.
Чтобы вызвать функцию, необходимо записать:
Run myf(a,b,c)
После этого начнут выполняться команды, написанные в функции, только вместо переменной x будет подставляться a, вместо y - b, вместо z - c. Затем продолжится выполнение макроса.
Пример функции "Нахождение последней строки с данными" можно посмотреть здесь .