Skip to main content
Mathieu Guindon's user avatar
Mathieu Guindon's user avatar
Mathieu Guindon's user avatar
Mathieu Guindon
  • Member for 12 years, 7 months
  • Last seen more than a month ago

Stats

75,594
reputation
4.2m
reached
869
answers
157
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

18
gold badges
194
silver badges
468
bronze badges
3,019
Score
559
Posts
54
Posts %
1,310
Score
282
Posts
27
Posts %
770
Score
155
Posts
15
Posts %
546
Score
56
Posts
5
Posts %
418
Score
79
Posts
8
Posts %
412
Score
72
Posts
7
Posts %

Top posts

View all questions and answers
question
130
Aug 29, 2014
answer
60
Apr 27, 2016
question
52
Oct 13, 2013
answer
45
Aug 15, 2015
question
44
Dec 8, 2014
question
40
Oct 15, 2014