74,118
reputation
17
181
451

Mathieu Guindon
Loading…

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 (retired) on Code Review Stack Exchange, 2015-2021
Microsoft MVP (Office Apps & Services), 2018-

Rubberduck
rubberduckvba.com | twitter | github | wordpress

865
answers
157
questions
~3.8m
people reached

Top tags (312)

Score 2,977
Posts 559
Posts % 55
Score 1,272
Posts 279
Score 761
Posts 155
Score 538
Posts 56
Score 413
Posts 78
Score 406
Posts 72

Top posts (1,022)

View all questions and answers

Badges (649)

Gold

17

Rarest

Silver

181

Rarest

Bronze

451

Rarest