Skip to main content
Mathieu Guindon's user avatar
Mathieu Guindon's user avatar
Mathieu Guindon's user avatar
Mathieu Guindon
  • Member for 11 years, 2 months
  • Last seen more than a month ago
Stats
74,994
reputation
126k
reached
260
answers
88
questions
Loading…
About

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-2022

Rubberduck
rubberduckvba.com | twitter | github | wordpress

4
gold badges
96
silver badges
240
bronze badges
2,384
Score
309
Posts
89
Posts %
299
Score
22
Posts
6
Posts %
265
Score
29
Posts
8
Posts %
243
Score
36
Posts
10
Posts %
227
Score
60
Posts
17
Posts %
185
Score
29
Posts
8
Posts %
Top posts
View all questions and answers