我创建了一个自定义函数,该函数正在VBA的另一个模块中明确使用。函数看起来像这样:
Function Coverts(ByVal inputString As String) As String
'Coverts code here
End Function
在VBA和Excel UI中都可以正常工作。但是,我不希望它工作或出现在Excel UI中,因为我只想在VBA中使用它。有办法吗?
谢谢
答案 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