I don't see what you are trying to do. If it is just to replace "?" if it occurs as the first character in a string, then Left() can be used.

If you add a "Debug.Print m" after your .Execute, you will see that no match is found.

If you are a big fan of RegExp, you should buy a program like RegXBuddy.