Добавить проверку данных в ячейку Excel с помощью сценария VBA - PullRequest
0 голосов
/ 24 января 2019

Какие параметры мне нужны в вызове VBA для получения DataValidation, который использует List, на который ссылается через Named RANGE?

Наш ассортимент называется WinPercent.Он уже определен с помощью vba.

Предупреждение по умолчанию Stop в порядке, но я хочу получить что-то, что работает, как показано ниже:

enter image description here

В данный момент 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...