Опция Private Module, просто скрывает UDF от мастера функций. Эта опция позволяет скрыть модули от внешних пользователей и облегчает просмотр ваших открытых вызовов функций. Вы все еще можете использовать их на рабочем листе, если знаете имя функции. Вот как это работает.
Однако, если вы попытаетесь использовать эту Закрытую функцию из любого другого места, например, из события Worksheet_Change, вы не сможете этого сделать. И если они объявлены как «Public» с «Option Private Module», то к ним можно получить доступ.
С MSDN :
Когда модуль содержит Option Private Module, открытые части, например, переменные, объекты и определяемые пользователем типы, объявленные на уровне модуля, все еще доступны в проекте, содержащем модуль, но они не доступны для других приложений. или проекты.
По вашему вопросу
Есть ли способ полностью заблокировать использование пользовательских функций вне проекта VBA?
Есть два способа, которыми я могу придумать
1) Защита вашего проекта VBA, чтобы пользователь не знал названия функции.
2) Создание надстройки