Ваша проблема в том, что IsNumeric()
функция возвращает true, если ячейка пуста из-за ее определения. Смотрите документацию по IsNumeric()
функции здесь
Чтобы проверить, пуста ли ячейка, вы можете использовать IsEmpty()
функцию. Вы можете увидеть эту ссылку для получения дополнительной информации об этой функции.
Таким образом, в вашей функции вам необходимо убедиться, что ячейка не пуста и содержит числовое значение.
Private Sub CommandButton1_Click() If IsNumeric(Range("C4").value) And Not IsEmpty(Range("C4")) Then FinishClear Else MsgBox "Please enter Invoice number" End If End Sub