About Me and the Active Object
The Visual Basic Me keyword provides a way to refer to an instance of the object created by the current class. I know that’s a little confusing; here’s how it works: if you write code in the ThisWorkbook class, Me is the same as ThisWorkbook, as shown by Figure 4-11.
If you write that same code for one of the Worksheet classes, you get a different result as shown by the following code:
' In Objects sheet class.
Sub AboutMe( ) ' Displays:
Debug.Print Me.Name ' Objects
Debug.Print ThisWorkbook.Name ' ch04.xls
Debug.Print Me Is Sheets("Objects") ' True
End Sub
Figure 4-11. ThisWorkbook and Me are the same here
That’s because Excel creates an object out of the class at runtime, and Me refers to that object. You can use Me to refer to members of the class using the dot notation:
Sub DemoMe( )
Me.AboutMe ' Calls preceding AboutMe procedure.
End SubYou can’t use Me in a Module. It’s valid only in classes since it refers to the instance of the object created from the class and modules don’t have instances—modules are static code.
Excel provides a number of properties that return objects that currently have focus in the Excel interface. Some of these properties were included in the list of shortcuts shown in Table 4-1, but they bear repeating in Table 4-3.
Table 4-3. Active object properties
|
Property |
Returns |
|---|---|
|
|
|
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access