Какие параметры мне нужны в вызове VBA
для получения DataValidation
, который использует List
, на который ссылается через Named RANGE
?
Наш ассортимент называется WinPercent
.Он уже определен с помощью vba
.
Предупреждение по умолчанию Stop
в порядке, но я хочу получить что-то, что работает, как показано ниже:

В данный момент VBA выполняется без ошибок, но при переходе к проверке текущего DataValidation появляется всплывающее окно:
"Выбор содержит более одного типапроверка. Удалить текущие настройки и продолжить "
Код VBA:
Sub addWinPercent(wbk As Workbook)
Dim target As range
wbk.Names.Add Name:="WinPercent", RefersTo:=wbk.Sheets("DropLists").range("B1:B5")
Set target = wbk.Worksheets("StaffRequest").range("J3")
With target.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=WinPercent"
End With
End Sub
Я посмотрел статью SO:
Как добавить проверку данныхв ячейку с помощью VBA
ОБНОВЛЕНИЕ
Вот странное наблюдение.Прежде чем удалить лист DropList (на который указывает валидация), я ставлю точку останова непосредственно перед удалением и после удаления старой валидации.Я получаю всплывающее окно при проверке проверки в ячейке J3 (с графическим интерфейсом).Это говорит о том, что некоторые ячейки не имеют проверки, хочу ли я ее расширить.Если я скажу нет, там нет подтверждения.Но если я скажу ДА, то это вернется к старой проверке.На этом рабочем листе не должно быть проверки на данный момент, независимо от того, что я говорю.
Вот как я удаляю проверку, а затем старый лист
Set dest = wbk.Sheets("DropLists")
wbk.Names("YesNoList").Delete
Set target = wbk.Worksheets("StaffRequest").range("J3")
target.Validation.Delete 'delete previous validation
Application.DisplayAlerts = False
dest.Delete
Application.DisplayAlerts = True