我刚刚发现,即使私有过程在其所属的类模型中,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
报错 "Method or data member not found."。
如果我将 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
谢谢!
更新:感谢大家提供正确语法的提示,我的代码正在运行。我仍在寻找一个解释,为什么Me可以在它自己模块的实例中引用私有过程。我找不到任何好的文档。