Макрос для выпадающего списка с несколькими значениями в Excel
Ранее в сообщениях я рассказывал о том, как создать раскрывающийся список в ячейках, чтобы упростить ввод данных.
Ниже приведена ссылка на описание методов создания связанного раскрывающегося списка:
Как создать связанный выпадающий список в Excel в зависимости от значения в соседней ячейке.
В этой публикации описывается процедура создания раскрывающихся списков, в которых в ячейки записываются несколько значений.
Для начала следует создать обыкновенный выпадающий список.
Это требует:
- Войдите во вкладку «Данные»;
- Выберите опцию «Проверить данные»;
- Выберите «Список»;
- Укажите диапазон, из которого будет выбираться раскрывающийся список, или создайте список непосредственно в поле, отображаемом знаком «;».
После этой процедуры следует записать макрос в документ.
Для записи макроса необходимо:
- Откройте вкладку «Разработчик» (если вкладка отключена, включите ее в разделе Файл => Параметры => Настроить ленту);
- На вкладке «Разработчик» нажмите кнопку «Просмотреть код»;
- Запишите макрос в открывшемся окне;
- Закройте окно с макросом.
Давайте посмотрим на некоторые раскрывающиеся макросы.
Первый макрос со смещением списка в сторону (горизонтально).
Макротекст:
Частный вторичный рабочий лист_Изменение (значение ByVal как диапазон)
В случае ошибки Продолжить Далее
Если не пересекается (Target, Range («B2: B10»)) Is Nothing E Target.Cells.Count = 1 Then
Application.EnableEvents = False
Если Len (Target.Offset (0, 1)) = 0, то
Target.Offset (0, 1) = Цель
Другой
Target.End (xlToRight) .Offset (0, 1) = Цель
Конец, если
Цель Удалить содержимое
Application.EnableEvents = True
Конец, если
Конец подзаголовка
Обратите внимание, что в строке :
Если не пересекается (Target, Range («B1: B10»)) Is Nothing E Target.Cells.Count = 1 Then
Значения («B1: B10») — это диапазон, в котором будет работать выпадающий список.
Точно так же вы можете создать раскрывающийся список со сдвигом вниз и раскрывающийся список, который записывает несколько значений в ячейку, разделенную табуляцией или пробелом.
Макрос выпадающего списка со смещением вниз:
Частный вторичный рабочий лист_Изменение (значение ByVal как диапазон)
В случае ошибки Продолжить Далее
Если не пересекается (Target, Range («C2: F2»)) Is Nothing E Target.Cells.Count = 1 Then
Application.EnableEvents = False
Если Len (Target.Offset (1, 0)) = 0, то
Target.Offset (1, 0) = Цель
Другой
Target.End (xlDown) .Offset (1, 0) = Цель
Конец, если
Цель Удалить содержимое
Application.EnableEvents = True
Конец, если
Конец подзаголовка
Макрос выпадающего списка с внесением нескольких значений в одну ячейку:
Частный вторичный рабочий лист_Изменение (значение ByVal как диапазон)
В случае ошибки Продолжить Далее
Если не пересекается (Target, Range («B2: B5»)) Is Nothing And Target.Cells.Count = 1 Then
Application.EnableEvents = False
newVal = Цель
Отмена заявки
oldval = Цель
Если Len (oldval) 0 И oldval newVal Тогда
Target = Target & «//» & newVal
Другой
Target = newVal
Конец, если
Если Len (newVal) = 0, то Target.ClearContents
Application.EnableEvents = True
Конец, если
Конец подзаголовка
В строке If Not Intersect (Target, Range («B2: B5»)) равно Nothing и Target.Cells.Count = 1 Then
указывается диапазон действия макроса.
Онлайн
Target = Target & «//» & newVal
указан разделитель «//». Его можно заменить любым знаком препинания, текстом или пробелом.