Использование именованного диапазона для создания выпадающего списка - PullRequest
0 голосов
/ 26 ноября 2018

То, что я читал на подобные темы, противоположно тому, что я хочу сделать.Поэтому я прошу посмотреть, возможно ли это вообще.

В настоящее время у меня есть лист, который использует следующую подпункт для создания раскрывающегося списка на основе строки имен, разделенных запятыми

    Sub MakeList(ByRef r As Range, ByRef Config As String)

    r.Clear
    If Not Config = "" Then
        r.Select
            With Selection.Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=Config
                .IgnoreBlank = True
                .InCellDropdown = True
                .InputTitle = ""
                .ErrorTitle = ""
                .InputMessage = ""
                .ErrorMessage = ""
                .ShowInput = True
                .ShowError = True
            End With
    End If
    End Sub

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

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Спасибо @Mathieu Guindon за решение.Ответ был очень прост, но я не знал степень превосходной способности.

Вместо того, чтобы циклически проходить через Range("NameOfRange") и принимать значение каждой ячейки, вы можете вызвать суб MakeList с "=NameOfRange" какСтроковый аргумент.Excel автоматически заполнит список значениями в пределах вашего именованного диапазона.


Редактировать:

Для всех, кто сталкивается с этим, именованный диапазон должен быть непрерывным диапазоном в одном столбце.или строкаПо сути, все условия применяются так, как если бы вы делали раскрывающийся список вручную на листе.Если ваш именованный диапазон не удовлетворяет этому условию, вам придется выполнить цикл и сохранить значения в виде строки с разделителями-запятыми и выполнить ее с помощью приведенного выше кода.В противном случае вы получите ошибку.

0 голосов
/ 26 ноября 2018

Использование комбинации Таблица / Именованный диапазон довольно просто.Просто поместите ваши исходные данные в таблицу (ctrl + t), затем выберите столбец данных и присвойте ему имя.Затем установите источник списка для проверки данных на новый именованный диапазон.Вот краткое руководство, которое покажет вам, как это сделать: https://www.excelcampus.com/tips/dynamic-data-validation/

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