【发布时间】:2009-12-13 05:25:13
【问题描述】:
我刚刚发现 Me 关键字无法访问私有过程,即使它们位于自己的类模型中。
在 Class1 中取以下代码:
Private Sub Message()
Debug.Print "Some private procedure."
End Sub
Public Sub DoSomething()
Me.Message
End Sub
这段代码实例化了一个类的实例:
Sub TestClass()
Dim objClass As New Class1
objClass.DoSomething
End Sub
Me.Message 抛出编译错误“找不到方法或数据成员。”
如果我将Private Sub Message() 更改为Public,则程序运行正常。我也可以从 DoSomething 过程中删除 Me 关键字,但我的印象是 Me 关键字背后的想法是确保正确封装 Class1 的多个实例。
为什么VBA Me关键字不能访问自己模块中私有的过程?省略 Me 关键字并在课堂上执行类似操作是否安全?
Private Sub Message()
Debug.Print "Some private procedure."
End Sub
Public Sub DoSomething()
Message
End Sub
谢谢!
更新:感谢有关正确语法的提示,我的代码正在运行。我仍在寻找为什么我可以在它自己的模块的实例中引用私有过程的解释。我找不到任何好的文档。
【问题讨论】:
-
该问题目前适用于程序,但可以概括为包括所有类型的 private 成员:
Me不能用于访问私人成员,无论是Sub、Function、Property或Event。
标签: vba scope encapsulation