Ok, are you saying that when you pass vNewValue as "", strMouseIcon keeps its original value? That isn't possible, and this should prove it.

Change: Debug.Print strMouseIcon
To: Debug.Print ">"; strMouseIcon; "<", ">"; vNewValue; "< Equal? "; (strMouseIcon = vNewValue)