...but added immediately after:
[vba]
If InStr(m.Value, "!") = 0 Then v = Evaluate("'" & r.Parent.Name & "'!" & m.Value)
[/vba]to cope with pre-existing sheet refs in the formula and sheet names with spaces in.
The test for an existing sheet reference is a bit basic, I know.
I didn't even think of either of those. Nice catch Pascal, Thanks.