Both subs and functions are procedures. Both can accept parameters (arguments) as inputs. Only a function can return a value to whatever called it.
Regardless of whether or not it returns a value, only a function can be called by certain things. Examples would be a toolbar, menu or ribbon button. Also, to substitute a custom procedure for a built in event (e.g. command button click) only a function will work.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.