Я только что обнаружил, что ключевое слово 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
, процедура работает нормально. Я также могу удалить ключевое слово Me из процедуры DoSomething, но у меня сложилось впечатление, что идея ключевого слова Me заключается в том, чтобы убедиться, что несколько экземпляров Class1 правильно инкапсулированы.
Почему процедуры доступа к ключевым словам VBA Me в своем собственном модуле не являются приватными? Можно ли опустить ключевое слово Me и сделать что-то подобное в классе?
Private Sub Message()
Debug.Print "Some private procedure."
End Sub
Public Sub DoSomething()
Message
End Sub
Спасибо!
Обновление: спасибо за советы по правильному синтаксису, мой код работает. Я все еще ищу объяснение, почему я могу ссылаться на частные процедуры в экземпляре его собственного модуля. Я не мог найти хорошую документацию.