I think it is a preference thing but declaring variables with DIM before using with Option Explicit can save tons of time cost by typo.
OTOH, Strings with $ are self documenting, I like $ for strings (Explicit free) but it is an extra character to type. And in usually smaller SUBs and Functions there is not an overwhelming amount of variables to track.
Declaring in parameters list the type with AS might be handy with reusable routines.
Be careful with subs that will try to pass back arguments by ref. ie if you change a value of argument in a sub that change might effect main program with that variable.