Проверка данных с помощью косвенной формулы - PullRequest
0 голосов
/ 05 сентября 2018

Я создал VBA для проверки данных с косвенной формулой, но выдает ошибку при запуске макроса. Я что-то упустил?

     With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=INDIRECT(BD2)"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With

1 Ответ

0 голосов
/ 05 сентября 2018

Установка INDIRECT Валидация выдает ошибку, если INDIRECT не оценивает правильный диапазон во время его создания - если вы делаете это вручную, вы получаете всплывающее сообщение «Вы хотите продолжить в любом случае», но в VBA это просто не удается. Тестирование с DisplayAlerts = False, похоже, не исправляет это.

Единственные варианты, которые я могу придумать, - это либо заполнить BD2 временным, действительным значением, либо включить диапазон «Null», включенный в оператор IF внутри вашего INDIRECT, например. Formula1:="=INDIRECT(IF(LEN(BD2)>0,BD2,""DropDown_Default""))", где DropDown_Default - именованный диапазон, содержащий одну пустую ячейку.

...