私有函数可在工作表上使用

时间:2012-02-19 15:08:33

标签: excel excel-vba vba

我发现工作表中仍然可以使用私有函数。它们是隐藏的,但如果用户输入了他们的名字,他们就会被调用。为什么?它应该以这种方式工作吗?有没有办法完全阻止用户定义的函数在VBA项目之外使用?我尝试使用Private关键字声明函数,或将Option Private Module放在模块的顶部。提前谢谢。

1 个答案:

答案 0 :(得分:3)

选项专用模块,只需从功能向导中隐藏UDF。此选项允许您从外部用户隐藏模块,并使您更容易查看公开的函数调用。如果您知道函数的名称,仍可以从工作表中使用它们。这就是它的工作原理。

但是,如果您尝试从其他任何地方使用该私有函数,例如Worksheet_Change事件,您将无法使用。如果它们被声明为“公共”并带有“选项专用模块”,则可以访问它们。

来自MSDN

  
    
      

当模块包含选项专用模块时,在模块级别声明的公共部分(例如,变量,对象和用户定义类型)在包含该模块的项目中仍然可用,但它们不可用于其他应用程序或项目。

    
  

关于你的问题

  
    
      

有没有办法完全阻止用户定义的函数在VBA项目之外使用?

    
  

我有两种方法可以想到

1)保护您的VBA项目,以便用户不知道该功能的名称。

2)创建加载项