Ho appena scoperto che la parola chiave Me non può accedere alle procedure private anche quando si trovano all'interno del proprio modello di classe.Perché la parola chiave VBA Me non può accedere alle procedure private nel proprio modulo?
Prendere il seguente codice nel Class1:
Private Sub Message()
Debug.Print "Some private procedure."
End Sub
Public Sub DoSomething()
Me.Message
End Sub
Questo codice crea un'istanza di un un'istanza della classe: "membro di metodo o dati non trovato"
Sub TestClass()
Dim objClass As New Class1
objClass.DoSomething
End Sub
Me.Message
tiri Errore di compilazione
Se cambio Private Sub Message()
in Public
, la procedura funziona correttamente. Posso anche rimuovere la parola chiave Me dalla procedura DoSomething, ma ho avuto l'impressione che l'idea alla base della parola chiave Me sia quella di garantire che più istanze di Class1 siano incapsulate correttamente.
Perché non è possibile accedere alle procedure di accesso alle parole chiave VBA Me nel proprio modulo quando sono private? È sicuro omettere la parola chiave Me e fare qualcosa di simile in una classe?
Private Sub Message()
Debug.Print "Some private procedure."
End Sub
Public Sub DoSomething()
Message
End Sub
Grazie!
Aggiornamento: Grazie per i suggerimenti sulla sintassi corretta, il mio codice funziona. Sto ancora cercando una spiegazione di perché Me può fare riferimento a procedure private in un'istanza del proprio modulo. Non ho trovato alcuna buona documentazione.
ha un senso. Sembra come 'Me' è una scorciatoia per creare ipoteticamente una variabile oggetto (' Dim Me As Object') e impostare quella variabile sull'oggetto in cui si trova il codice ('Set Me = ThisModule'. Quella variabile oggetto avrebbe comunque accesso alle proprietà e alle procedure del modulo dall'esterno Grazie! – Kuyenda