Je viens de découvrir que le mot-clé Me ne peut pas accéder aux procédures privées même lorsqu'elles sont dans son propre modèle de classe.Pourquoi le mot clé VBA Me ne peut-il pas accéder aux procédures privées dans son propre module?
Prenez le code suivant dans Class1:
Private Sub Message()
Debug.Print "Some private procedure."
End Sub
Public Sub DoSomething()
Me.Message
End Sub
Ce code instancie une instance de la classe:
Sub TestClass()
Dim objClass As New Class1
objClass.DoSomething
End Sub
Me.Message
lancers francs compilent erreur "Méthode ou membre de données non trouvé." Si je change Private Sub Message()
en Public
, la procédure fonctionne correctement. Je peux également supprimer le mot-clé Me de la procédure DoSomething, mais j'avais l'impression que l'idée derrière le mot-clé Me est de s'assurer que plusieurs instances de Class1 sont correctement encapsulées. Pourquoi le mot clé VBA Me ne peut-il pas accéder aux procédures dans son propre module quand elles sont privées? Est-il prudent d'omettre le mot-clé Me et de faire quelque chose comme ça dans une classe?
Private Sub Message()
Debug.Print "Some private procedure."
End Sub
Public Sub DoSomething()
Message
End Sub
Merci!
Mise à jour: Merci pour les conseils sur la bonne syntaxe, mon code fonctionne. Je suis toujours à la recherche d'une explication de pourquoi Me peut référencer des procédures privées dans une instance de son propre module. Je n'ai pas trouvé de bonne documentation.
sens. Semble comme 'Me' est un raccourci pour créer une variable d'objet hypothétiquement (' Dim Me As Object') et mettre cette variable à l'objet dans lequel le code est ('Set Me = ThisModule'.) Cette variable d'objet accèderait toujours aux propriétés et procédures du module de l'extérieur Merci! – Kuyenda