A macro is not supposed to stop working for no reason. There has to be a cause. Have you tried to debug and step thru the code.
It is same as yours, just a minor tweak
Dim Cell As Range
For Each Cell In Selection
If (IsNumeric(Cell.Value) And Cell <> "") Then Cell.Value = Cell.Value * -1