It took several hours to try nearly everything, but apparently it's better to just use an automatic Backspace than to assign null values mid-stream. Also, since we are just throwing a backspace, a while loop is too dangerous, so I reverted it back to an if statement.
That same code, but better, looks like:
function R11ValueChanging(app, event)
changingValue = event.Value;
robot = java.awt.Robot;
% This is a good way to clear invalid input live
if (changingValue ~= "" && changingValue ~= "1" && changingValue ~= "2" && changingValue ~= "3" && changingValue ~= "4" ...
&& changingValue ~= "5" && changingValue ~= "6" && changingValue ~= "7" && changingValue ~= "8" && changingValue ~= "9")
robot.keyPress(java.awt.event.KeyEvent.VK_BACK_SPACE);
robot.keyRelease(java.awt.event.KeyEvent.VK_BACK_SPACE);
end
end