Программное создание списка проверки Excel VBA - PullRequest
3 голосов
/ 21 декабря 2010

У меня есть массив данных, поступающих в код VBA из внешнего источника.Я хочу иметь возможность назначить эти данные для использования в качестве проверки в раскрывающемся списке в ячейке на одном из листов в этой книге.Однако я не хочу копировать эти данные в лист и затем использовать именованный диапазон - данных может быть довольно много, и это не очень эффективно!

Я уверен, что должно бытьспособ - но я еще не нашел один.Есть идеи?

Ответы [ 2 ]

4 голосов
/ 21 декабря 2010
  1. Поместите данные в некоторый текстовый файл, разделив их запятой, например (a, b, c).

  2. Считайте эти данные, используя VBA, в строковую переменную, например, ValidationList.

  3. Используйте что-то вроде этого

    с диапазоном ("A1"). Проверка
    .Добавить тип: = xlValidateList, AlertStyle: = xlValidAlertStop, оператор: = _
    xlBetween, Formula1: = ValidationList
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
    Конец с

0 голосов
/ 03 июля 2013

Вот небольшой трюк, который я использовал, в этом «списке» есть ArrayList:

Dim ValidateList As String
For Each x In list
ValidateList = ValidateList + x + Chr(44)
Next
 With Sheets(yoursheet).Range(yourCell).Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
     xlBetween, Formula1:=ValidateList
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With

Может показаться немного грубым, но я думаю, что это работает без проблем:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...