Why not run a check BEFORE you start your loop?
Check to see if there are any negatives in your range. If so, you stop the
loop from making any changes thus you won't have to undo anything. As an added
bonus, it will save running time on your macro.
Sub NegCheck()
ColumnMin = Application.WorksheetFunction.Min(Range("A1:C65536"))
If ColumnMin < 0 Then Exit Sub
End Sub