We’re rewarding the question askers & reputations are being recalculated! Read more.
71,559
reputation
16
165
430

Mathieu Guindon
Moderator

About Me

Me is a reserved name (you can't have a variable by that name) that refers to something that can only exist at run-time in a procedure's scope: the current object. Under the hood, when you make a member call to DoSomething against a Class1 object, the call goes essentially like this:

Set obj = New Class1
Class1.DoSomething obj

This means DoSomething looks like this in VBA:

Public Sub DoSomething()
End Sub

But VBA sees it like this:

Public Sub DoSomething(ByVal Me As Class1)
End Sub

That makes Me an implicit locally-scoped ByVal parameter of type Class1, and inside the DoSomething scope it holds a reference to whatever object the caller is currently using.


Moderator on Code Review Stack Exchange, 2015-2018, 2019-
Microsoft MVP (Office Apps & Services), 2018-

Rubberduck
rubberduckvba.com | twitter | github | wordpress

849
answers
154
questions
~3.5m
people reached

Top tags (313)

Score 2,927
Posts 555
Posts % 55
Score 1,158
Posts 264
Score 698
Posts 144
Score 529
Posts 56
Score 403
Posts 77
Score 401
Posts 72

Top posts (1,003) All Questions Answers | Votes Newest

View all questions and answers

Badges (611)

Gold

16

Rarest

Silver

165

Rarest

Bronze

430

Rarest