1)Public変数ならば、引数で渡す必要もないと思いますが、いかがですか?
また、もし行うとしてもPublic変数宣言は標準モジュール側で行うのが普通です。
2)プロシージャ名と引数がスペースなしに連結してしまっているのが原因でしょう。
Debug.Print "'Module1.*****" & Day & " '"
などとして、ご自分で確認するとよいでしょう。(慎重さ、しつこさも必要です)
3)Module1とする意味は、同名のプロシージャが別のモジュールにあるんですか?
そうなら結構ですが、もしなければモジュール指定は不要です。
こんな書き方でどうですか。
文字列変数は文字を展開して"で囲んで渡します。
参考にしてください。
<<Module2>> Call側
Private Sub test2()
Dim s As String
s = "aaa"
'''' Debug.Print "'test " & """" & s & """" & "'"
Application.OnTime Now(), "'test " & """" & s & """" & "'"
End Sub
<<Module1>>
Sub test(s)
MsgBox s
End Sub
(# FunctionでもOKです。)