在Excel中禁用自定义功能

时间:2018-08-29 07:57:40

标签: excel vba excel-vba

我创建了一个自定义函数,该函数正在VBA的另一个模块中明确使用。函数看起来像这样:

Function Coverts(ByVal inputString As String) As String
   'Coverts code here
End Function

在VBA和Excel UI中都可以正常工作。但是,我不希望它工作或出现在Excel UI中,因为我只想在VBA中使用它。有办法吗?

谢谢

3 个答案:

答案 0 :(得分:4)

放入

Option Private Module

位于包含您的函数的模块顶部。


来自MSDN

  

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

答案 1 :(得分:1)

您可以将关键字“公共”或“专用”添加到函数,子项或全局变量中以进行指定。

因此,如果您只想通过代码而不是在Excel工作表中访问此功能,则可以添加private:

Private Function Coverts(ByVal inputString As String) As String
   'Coverts code here
End Function

答案 2 :(得分:1)

如果从工作表中调用Application.Caller,则可以使该函数无法运行。如果是通过XL UI调用的函数,则将是Range(即函数所在的单元格)。

Function Coverts(ByVal inputString As String) As String

   If TypeName(Application.Caller) = "Range" then
      Coverts = cverr(xlerrna)
      exit function
   end if

   'Coverts code here

End Function