Question: ```
Option Explicit
Dim wb1 As Workbook
Dim shtDisplay As Worksheet

Public Sub Main()
    Set wb1 = ActiveWorkbook
    Set shtDisplay = wb1.Worksheet("Sheet1")
    Call Main2
End Sub

Public Sub Main2()
    shtDisplay.Cells(1, 1).Value = "YES"
End Sub

```

I'm trying to declare aliases (variables) early in the module so I can use the same alias later in within the module without having to always declare in every sub/function.

As I understand scope, by the time the above code gets to Main2, shtDsplay would be set so I don't have to type out `ActiveWorkbook.Worksheets("Sheet1").Cells(1,1).Value = Yes` and yet before the program even gets that far Excel throws the **Object does not support this property or method** error at line `Set shtDisplay = wb1.Worksheet("Sheet1")`

What am I not understanding?

Thank you in advance for what is probably the most simple problem in the world and I can't get past it.

Answer: 
You want the collection, not the object.

`Worksheet` (singular) is an object

`Worksheets` (plural) is a collection of objects

Simply add the `s` to make it plural.

```
wb1.Worksheets("Sheet1")

```
See if the code below makes more sense in what you are trying to achieve, I have comments inside the code to clarify some of the point.

```
Option Explicit

' these are only recognized within the Module, not outside the module
Dim wb1 As Workbook
Dim shtDisplay As Worksheet

Sub Main()

' ~~~ Call Sub that initializes all Worksheet, Ranges as other objects ~~~
Init  ' there's no need to use 'Call'

shtDisplay.Cells(1, 1).Value = "YES"

End Sub

Sub Init()

' this Sub initializes and sets all Objects, such as Worksheets, Ranges, Flag, etc...

Set wb1 = ThisWorkbook ' if you want to set-up the workbook that has the VBA code
Set shtDisplay = wb1.Worksheets("Sheet1")

End Sub

```