Обычно можно применить проверку данных в excel через vba, но у меня возникла конкретная проблема.
Я использую косвенный метод для применения проверки, обычно, когда я не использую vba, я получаю предупреждение от excel о том, что «источник в настоящее время оценивается как ошибка, вы хотите продолжить?» (это потому, что ячейки, на которые косвенно ссылаются, могут быть пустыми), теперь я могу легко пропустить эту ошибку в Excel, нажав «Да»
Вот ссылка http://www.contextures.com/xldataval02.html (списки зависимой проверки)
Но когда я пытаюсь выполнить то же самое с помощью vba, я получаю ошибку времени выполнения, нет дружественной подсказки, которая позволяет мне продолжить. Как я могу справиться с такой ошибкой.
При ошибке возобновление не работает, потому что vba вообще не применяет проверку.
Вот код
Set rng = ThisWorkbook.Sheets("input").Range("AB11:AB65536")
With rng.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:= _
"=INDIRECT(cablecode&""_depth_""&$Q11&""_""&$Z11&""_values"")"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
cablecode — это статический именованный диапазон
Q11 и Z11 относятся к входам в этой конкретной строке
deep и values являются обычными строками.
cablecode может иметь два значения = "is" или "iec"
Q11 может быть "xlpe" или "pvc"
Z11 может быть "al" или "cu"
так как кабельный код является постоянным для всего проекта, я ссылался на него напрямую, Q11 и Z11 могут быть разными для разных строк, поэтому я ссылался на них отдельно.
Вся строка выглядит как "is_depth_al_xlpe_values" с аналогичными перестановками, и все именованные диапазоны уже определены.