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
ありがとう!
更新: 適切な構文に関するヒントをありがとう、私のコードは機能しています。Me が独自のモジュールのインスタンスでプライベート プロシージャを参照できる理由の説明をまだ探しています。適切なドキュメントが見つかりませんでした。