Using Application.Wait to wait for 1 second is highly unreliable as its time resolution is only itself in the order of 1 second. This is in addition to the errors in the syntax of your original code (as you realised).
For short delays, use Sleep from kernel32:
Use it like:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub mySub()
Sleep 500 'pauses execution for at least 500 milliseconds
End Sub
So, , use the above for a much simpler and more reliable sleep :)
Edit: just so you realise, you do not define a function inside a sub, you do it outside - like:
Sub mySub()
MsgBox myFunc()
End Sub
Function myFunc()
myFunc = "Hello!"
End Function