Like others, the problem is in parentheses. What no one explained explains why these are parentheses.
When you say this:
getEffort previousCell
Then you pass the previousCell Range object to the getEffort procedure. This is what the procedure expects, and therefore it is happy.
When you say this:
getEffort (previousCell)
previousCell VBA previousCell. VBA , . Range .Value, .
, getEffort. , getEffort Range, .
, Target previousCell, - . , , previousCell. , :
getEffort (Target)
.