Vba 私有模块中的智能感知
假设我有一个名为Vba 私有模块中的智能感知,vba,intellisense,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.”(或“Me.”如果Mo
Module1
的模块,其代码如下:
Private Sub MyPrivateSub()
'do something
End Sub
Public Sub MyPublicSub()
'do something
End Sub
Public Sub test()
End Sub
如果我将光标放在Test()
中,然后开始键入“MyPrivateSub”或“MyPublicSub”,我将无法获得任何智能感知。我可以键入“Module1.”(或“Me.”如果Module1
是类模块),以获得intellisense菜单,但这只包含公共方法MyPublicSub
,如下所示:
是否有办法为所有会员(公共和私人)提供intellisense菜单?我正在处理一个包含许多方法的模块的项目,不断地上下复制/粘贴成员名称非常耗时。如果您从fresh开始,可以执行以下操作: 对于您的所有私有子功能,请将其命名为标准格式,但目前将其命名为公共功能,例如: 公共子IAMU私有计算日期()
Public sub iamprivate_getsetfunction()
完成宏后,只需在编辑器中查找所有“Public sub-iamprivate”并将其替换为“Private sub”。如果从fresh开始,可以执行以下操作: 对于您的所有私有子功能,请将其命名为标准格式,但目前将其命名为公共功能,例如: 公共子IAMU私有计算日期()
Public sub iamprivate_getsetfunction()
完成宏后,只需在编辑器中查找所有“Public sub”并将其替换为“Private sub”。简短回答 打组合 CTRL+空格键 然后开始输入子名称,如图所示 长话短说 你在编程方面所做的一切都很重要。当您决定将子/函数/变量设置为私有时,您这样做是有原因的,您需要了解这将如何影响访问级别和“范围” 成员的范围由其访问级别决定,在VBE中,任何私有且符合其父成员资格的内容都不会获得intelli sense。简单地说,因为你不能(不应该能够访问它)从外面 因为您的
MyPrivateSub
访问级别是Private
您无法通过使用Module1限定模块来使用intelli sense访问它。
简短回答
打组合
CTRL+空格键
然后开始输入子名称,如图所示
长话短说
你在编程方面所做的一切都很重要。当您决定将子/函数/变量设置为私有时,您这样做是有原因的,您需要了解这将如何影响访问级别和“范围”
成员的范围由其访问级别决定,在VBE中,任何私有且符合其父成员资格的内容都不会获得intelli sense。简单地说,因为你不能(不应该能够访问它)从外面
因为您的
MyPrivateSub
访问级别是Private
您不能通过使用Module1限定模块来使用intelli sense访问它。
我怎么说是正确的,但是如果您从新开始,可能会有另一个问题让我问您一个问题@roryap,您将如何处理Module1.MyPrivateSub()
,或者从Module1.MyPublicSub()中获得哪些功能?为什么首先需要引用它?@mehow--我在模块内部调用私有方法,在其他模块外部调用公共方法。这些方法包含多个位置所需的代码(请参阅)。@Alex--您能详细说明一下吗?@roryap您如何调用它?干什么与这一切有关系我不知道;)似乎你还没有提出现实生活中的问题,你的SSCE也没有真正表达你对我的看法,但如果你是从新开始的,可能会有另一个问题让我问你一个问题@roryap,你会如何处理Module1.MyPrivateSub()
或者您从模块1.MyPublicSub()中获得了什么功能?为什么首先需要引用它?@mehow--我在模块内部调用私有方法,在其他模块外部调用公共方法。这些方法包含多个位置所需的代码(请参阅)。@Alex--您能详细说明一下吗?@roryap您如何调用它?干什么与这一切有关系我不知道;)似乎你还没有提出现实生活中的问题,你的SSCCE也没有真正表达出你在没有冒犯之后的真实想法,但我认为这是一种过分的做法。你所需要做的就是把Private
改为Public
->写你的代码->然后把它换回Private
@mehow我认为如果有很多函数的话会更好,但我想你是对的~无意冒犯,但我认为这是一种过分的做法。你所需要做的就是将Private
更改为Public
->编写你的代码->然后将其交换回Private
@mehow我认为如果有大量的函数,这样做会更好,但我想你是对的~令人困惑的是,Module1.MyPrivateSub
是VBA允许的,在Module1
中,却没有显示在列表中,好像Intellisense不知道当前的模块是什么name@z抱歉,有什么让人困惑的?它是私有
的访问级别吗?如果某个对象在VBA中是private
,则可以从同一模块访问该对象,但必须使用Module1对其进行限定。
不允许调用其私有方法,也不允许从何处调用该对象。是的,如果从同一模块调用,则可以module@z对不起,我现在很困惑ctrl+space
允许您调用所有成员,而不考虑其访问级别。当您通过Module1.
限定私有MyPrivateSub
时,就像尝试全局访问它一样-点语法。既然你已经把它保密了,我觉得不允许