私人模块中的智能感知

时间:2014-06-24 13:24:21

标签: vba intellisense

假设我有一个名为Module1的模块,其代码如下:

Private Sub MyPrivateSub()
    'do something
End Sub

Public Sub MyPublicSub()
    'do something
End Sub

Public Sub test()

End Sub

如果我将光标放在Test()内并开始输入“MyPrivateSub”或“MyPublicSub”,我就不会得到任何智能感知。我可以输入“Module1”。 (或“我。”,如果Module1是一个类模块)来获取智能感知菜单,但这只包含公共方法MyPublicSub,如下所示:

enter image description here

有没有办法为所有成员(公共和私人)获取智能感知菜单?我正在开发一个包含许多方法的模块的项目,并且不断上下复制/粘贴成员名称非常耗时。

2 个答案:

答案 0 :(得分:4)

简短回答

点击

的组合

CTRL + SPACE

并开始输入如此处所示的子名称

enter image description here

长答案

你在编程方面所做的一切都很重要。当您决定将您的子/功能/变量设为私有时,您出于某种原因这样做,您需要了解这将如何影响访问级别和"范围"。

成员的范围取决于其访问级别,在VBE中任何私有且受其限制的父成员都不具备智能。简单地说,因为你不能从外面那里(不应该能够访问它)。

由于您的MyPrivateSub访问权限级别为Private,因此您无法通过使用Module1.对模块进行限定来智能访问它。

答案 1 :(得分:0)

如果您从新鲜开始,您可以执行以下操作: 对于所有私有子函数,将它们命名为标准格式,但目前为公共函数,例如:

Public sub iamprivate_calDate()
Public sub iamprivate_getsetfunction()
...

完成宏后,只需在编辑器中找到并将所有“Public sub iamprivate”替换为“Private sub”。