vba excel write sub,可供两个模块访问,但对用户不可见

时间:2013-11-26 09:56:03

标签: excel-vba access-modifiers vba excel

我想将一些我的util subs移动到另一个模块中。问题是,如果我这样做,我必须将他们的访问修饰符设置为“公共”,然后当他按下“宏”按钮时,用户可以看到它们。

我该怎么办? 如何使用Utils模块而不让用户看到它?

谢谢, 李

2 个答案:

答案 0 :(得分:2)

将潜艇声明为Private,以便用户看不到它们。然后,如果您想给他们打电话,请使用Application.Run

例如

第1单元

Option Explicit

Sub Sample1()
    Application.Run "Module2.Sample2"
End Sub

<强>单词数

Option Explicit

Private Sub Sample2()
    MsgBox "Hello World"
End Sub

答案 1 :(得分:0)

将您的utils模块保存为excel Addin,而不是工作簿。确保文件名以.xla或.xlam结尾。这样,只有excel插件和工作簿中的其他vba代码才能看到它们,并且它们对用户是不可见的。

或者,如果只有一个Sub要隐藏或保存,则.xla不是一个选项。您可以为Sub提供一个可选参数

Option Explicit

public Sub Sample1(Optional x as string = "")
    ' Code goes here, just as before.
End Sub

然后它将不会显示在运行宏对话框中,即使它是公开的。