在另一个模块中声明子/功能,可由其他模块访问,但不能由用户访问

时间:2017-06-21 21:02:13

标签: vba excel-vba excel

我有一个模块ModuleA,其中包含用户将在电子表格中使用的Public函数:

Public Function UserCanSeeThis() As String
    UserCanSeeThis = "Hello, " & UserCannotSeeThisButModuleACan() & " user"
End Function

我有一个模块ModuleB,其中包含我要在ModuleA中使用的功能,但我不希望用户在编写{{{}时查看可用功能列表1}}进入单元格或阅读公式字典时:

=

我应该如何在Function UserCannotSeeThisButModuleACan() As String UserCannotSeeThisButModuleACan = "my dear" End Function 中声明该功能,以便ModuleB可以看到它,但用户不能?

p.s。我在网站上搜索过,只找到了"解决方案"对于ModuleA,我可以将Sub声明为Sub,然后使用Private从其他模块中调用它。 但是我希望有一些更加发达的友谊概念"但是在VBA中。

1 个答案:

答案 0 :(得分:6)

Option Private Module的顶部指定ModuleB;公众成员不会(明显地)接触到用户,但可随时从VBA项目内的任何地方获得。

你的Private + Application.Run黑客是......好吧,一个黑客。不要这样做 - 创建/离开公共成员Public,并使用Option Private Module隐藏宏列表中的模块。