This expression is OK as a let expression. No need for the expansion here.
Let vMonth = vYear & NUM(vMonth,'00');
Expansions are necessary in SQL expressions because the database server has no concept of QV variables. Expansions are also necessary in set expressions and sometimes when you need to inject some dynamic text into a statement.
In the front end, if the variable is defined with a leading =, then it is globally evaluated and it can be used without an expansion (it already contains the result of the expression). If not, then you need to inject the variable into the expression using a $ expansion. For example:
Set vMaxDate = '=Date(Max(Date))';
Use in expression: =vMaxDate
Set vMinDate = 'Date(Min(Date))';
Use in expression ='$(vMinDate)' // quotes needed for a date
Logic will get you from a to b. Imagination will take you everywhere. - A Einstein