Решение, которое вы опубликовали, может работать лучше, если вы прослушали событие KeyPress, а не событие CellEndEdit. Затем вы можете проверить действительные значения, когда пользователь вводит текстовое поле, и вернуться к предыдущему значению, если введенное значение недопустимо.
Или, наоборот, это не совсем то, о чем вы просите, но у вас может быть какой-то визуальный индикатор, который сообщает пользователю, что он печатает недопустимо, например, изменяя ForeColor на Red? Это будет информировать пользователя о неверных данных, не путая его или ее с текстовым полем, в котором будут отказываться от нажатия некоторых клавиш. Это в сочетании с вашей текущей проверкой записи может быть хорошим решением.