Object Modules
It is not possible the way you're trying to do it.
You have to differentiate 'normal' modules (via add module) and object modules (ThisWorkbook, Sheet1, etc.).
If you declare a public variable in a 'normal' module, it will be 'visible' to all procedures of all modules including object modules as it is e.g.:
WarningDate ExpirationDate
If you declare a public variable in an object module, it will be 'visible' to all procedures of the object module as it is e.g.:
WarningDate ExpirationDate
and it will be 'visible' to all other modules including object modules, but you have to use its object reference to refer to it, e.g.:
ThisWorkbook.WarningDate ThisWorkbook.ExpirationDate
Conclusion
You correctly declared the variables, but you didn't know how to refer to them. If you want public variables accessed without object references add (or pick) a module (not object module) and declare them there.
Visualize
' Code in ThisWorkbook Option Explicit Public ThisWorkbookDate As Date Sub MainThisWorkbook() MsgBox ThisWorkbookDate MsgBox Module1Date MsgBox Sheet1.Sheet1Date End Sub ' Code in Module1 Option Explicit Public Module1Date As Date Sub MainModule1() MsgBox ThisWorkbook.ThisWorkbookDate MsgBox Module1Date MsgBox Sheet1.Sheet1Date End Sub ' Code in Sheet1 Option Explicit Public Sheet1Date As Date Sub MainThis() 'OK MsgBox ThisWorkbook.ThisWorkbookDate MsgBox Module1Date MsgBox Sheet1Date End Sub