Частные функции могут использоваться на рабочем листе

Обновить

February 2019

Просмотры

682 раз

1

Я обнаружил , что частные функции по - прежнему доступны с листа. Они скрыты, но если пользователь их имя, они будут называться. Зачем? Предполагается ли это работать таким образом? Есть ли способ , чтобы полностью блокировать определенный пользователь функцию от использования вне проекта VBA? Я попытался объявить функции с Privateключевым словом, или размещения Option Private Moduleв верхней части моего модуля. Заранее спасибо.

1 ответы

3

Option Private Module, simply hides the UDF from the Function Wizard. This option lets you hide modules from external users and makes it easier to see your exposed function calls. You can still use them from the worksheet if you know the function's name. That's how it works.

However if you try to use that Private Function from anywhere else, for example Worksheet_Change event, you will not be able to. And if they are declared as "Public" with "Option Private Module" then they can be accessed.

From MSDN:

When a module contains Option Private Module, the public parts, for example, variables, objects, and user-defined types declared at module level, are still available within the project containing the module, but they are not available to other applications or projects.

Regarding your question

Is there a way to completely block user defined functions from being used outside of the VBA project?

There are 2 ways that I can think of

1) Protecting your VBA Project so that the user doesn't know the name of the function.

2) Creating an Add-In