У меня есть этот код. Это надуманный код для примера.
Sub x()
ActiveSheet.Range("A1").Validation.Delete
ActiveSheet.Range("A1").Validation.Add Type:=xlValidateCustom, Formula1:="=VALUE(RIGHT(A1,6))>0"
End Sub
Если при выполнении кода A1 пуст, я получаю ошибку 1004, ошибку, определяемую приложением или объектом. Я полагаю, это потому, что формула дает #VALUE!
вместо False
. Если я попытаюсь установить проверку вручную, я получу предупреждение о том, что результатом является ошибка, но если я нажму OK, проверка будет работать нормально.
Я решил, что это потому, что я не освобождал пустые ячейки от проверки, поэтому я добавил строку:
Sub x()
ActiveSheet.Range("A1").Validation.Delete
ActiveSheet.Range("A1").Validation.IgnoreBlank = True
ActiveSheet.Range("A1").Validation.Add Type:=xlValidateCustom, Formula1:="=VALUE(RIGHT(A1,6))>0"
End Sub
Но это просто сдвинуло ошибку на одну строку вверх. Теперь я получаю ошибку 1004 в строке IgnoreBlank = True
.
Я полагаю, я мог бы временно ввести значение в ячейку, установить проверку, а затем удалить содержимое ячейки, но я надеюсь, что есть другой способ.
Я делаю что-то неправильно? Изначально я планировал программную проверку в конце вместо использования функции проверки Excel.