Ранее в публикациях рассказывалось о том, как создается выпадающий список в ячейках для упрощения внесения данных.
Ссылка на описания метода создания связанного выпадающего списка ниже:
Как сделать связанный выпадающий список в «Эксель», зависящий от значения в соседней ячейке.
В данной публикации описана процедура создания выпадающих списков, которые записывают в ячейки по нескольку значений.
Для начала следует создать обыкновенный выпадающий список.
Для этого необходимо:
- Войти во вкладку «Данные»;
- Выбрать опцию «Проверка данных»;
- Выбрать «Список»;
- Указать диапазон, из которого будет выбираться выпадающий список или создать список прямо в появившемся поле через знак «;».
После этой процедуры следует записать макрос в документ.
Для записи макроса следует:
- Открыть вкладку «Разработчик» ( Если вкладка отключена, включите ее в разделе Файл=> Параметры=> Настройка Ленты);
- Во вкладке «Разработчик» выбрать кнопку «Просмотр кода»;
- В открывшееся окно записать макрос;
- Закрыть окно с макросом.
Давайте рассмотрим несколько макросов с выпадающими списками.
Первый макрос со смещением списка в сторону (горизонтально).
Текст макроса:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range(«B2:B10»)) Is Nothing And Target.Cells.Count = 1 Then
Application.EnableEvents = False
If Len(Target.Offset(0, 1)) = 0 Then
Target.Offset(0, 1) = Target
Else
Target.End(xlToRight).Offset(0, 1) = Target
End If
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
Необходимо обратить внимание, что в строке :
If Not Intersect(Target, Range(«B1:B10»)) Is Nothing And Target.Cells.Count = 1 Then
Значения («B1:B10»)— это диапазон в пределах которого будет работать выпадающий список.
Аналогичным образом можно создать выпадающий список со смещением вниз и выпадающий список, записывающий в ячейку несколько значений через знак табуляции или пробел.
Макрос выпадающего списка со смещением вниз:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range(«C2:F2»)) Is Nothing And Target.Cells.Count = 1 Then
Application.EnableEvents = False
If Len(Target.Offset(1, 0)) = 0 Then
Target.Offset(1, 0) = Target
Else
Target.End(xlDown).Offset(1, 0) = Target
End If
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
Макрос выпадающего списка с внесением нескольких значений в одну ячейку:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range(«B2:B5»)) Is Nothing And Target.Cells.Count = 1 Then
Application.EnableEvents = False
newVal = Target
Application.Undo
oldval = Target
If Len(oldval) <> 0 And oldval <> newVal Then
Target = Target & «//» & newVal
Else
Target = newVal
End If
If Len(newVal) = 0 Then Target.ClearContents
Application.EnableEvents = True
End If
End Sub
В строке If Not Intersect(Target, Range(«B2:B5»)) Is Nothing And Target.Cells.Count = 1 Then
указывается диапазон действия макроса.
В строке
Target = Target & «//» & newVal
указывается разделитель «//». Его можно заменить на любой знак препинания, текст или поставить пробел.
Выпадающий список с мультивыбором
Классический выпадающий список на листе Excel — отличная штука, но позволяет выбрать только один вариант из представленного набора. Иногда именно это и нужно, но бывают ситуации, когда пользователь должен иметь возможность выбрать несколько элементов из списка.
Давайте рассмотрим несколько типовых вариантов реализации такого списка с мультивыбором.
Вариант 1. Горизонтальный
Пользователь выбирает из выпадающего списка элементы один за другим, и они появляются справа от изменяемой ячейки, автоматически составляясь в список по горизонтали:
Выпадающие списки в ячейках С2:С5 в данном примере создаются стандартным образом, т.е.
- выделить ячейки С2:С5
- на вкладке или в меню Данные (Data) выбрать команду Проверка данных (Data Validation)
- в открывшемся окне выбрать вариант Список (List) и указать в качестве диапазона Источник (Source) ячейки с исходными данными для списка A1:A8
Затем в модуль листа нужно добавить макрос, который и будет делать всю основную работу, т.е. добавлять выбранные значения справа от зеленых ячеек. Для этого щелкните правой кнопкой мыши по ярлычку листа с выпадающими списками и выберите команду Исходный текст (Source code). В открывшееся окно редактора Visual Basic нужно вставить следующий код:
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset(0, 1)) = 0 Then Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub
При необходимости, замените во второй строке этого кода чувствительный диапазон выпадающих списков С2:С5 на свой.
Вариант 2. Вертикальный
То же самое, что и в предыдущем варианте, но новые выбранные значения добавляются не справа, а снизу:
Делается совершенно аналогично, но немного меняется код макроса обработчика:
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:F2")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset(1, 0)) = 0 Then Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub
Опять же, при необходимости, замените во второй строке этого кода чувствительный диапазон выпадающих списков С2:F2 на свой.
Вариант 3. С накоплением в той же ячейке
В этом варианте накопление происходит в той же ячейке, где расположен выпадающий список. Выбранные элементы разделяются любым заданным символом (например, запятой):
Выпадающие списки в зеленых ячейках создаются совершенно стандартно, как и в предыдущих способах. Всю работу делает, опять же, макрос в модуле листа:
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False newVal = Target Application.Undo oldval = Target If Len(oldval) <> 0 And oldval <> newVal Then Target = Target & "," & newVal Else Target = newVal End If If Len(newVal) = 0 Then Target.ClearContents Application.EnableEvents = True End If End Sub
При желании, можно заменить символ-разделитель (запятую) в 9-й строке кода на свой (например, пробел или точку с запятой).
Ссылки по теме
- Как создать простой выпадающий список в ячейке листа Excel
- Выпадающий список с наполнением
- Выпадающий список с добавлением недостающих вариантов
- Что такое макросы, как их использовать, куда вставлять код макросов на Visual Basic
Под выпадающим списком понимается содержание в одной ячейке нескольких значений. Когда пользователь щелкает по стрелочке справа, появляется определенный перечень. Можно выбрать конкретное.
Очень удобный инструмент Excel для проверки введенных данных. Повысить комфорт работы с данными позволяют возможности выпадающих списков: подстановка данных, отображение данных другого листа или файла, наличие функции поиска и зависимости.
Создание раскрывающегося списка
Путь: меню «Данные» — инструмент «Проверка данных» — вкладка «Параметры». Тип данных – «Список».
Ввести значения, из которых будет складываться выпадающий список, можно разными способами:
- Вручную через «точку-с-запятой» в поле «Источник».
- Ввести значения заранее. А в качестве источника указать диапазон ячеек со списком.
- Назначить имя для диапазона значений и в поле источник вписать это имя.
Любой из вариантов даст такой результат.
Выпадающий список в Excel с подстановкой данных
Необходимо сделать раскрывающийся список со значениями из динамического диапазона. Если вносятся изменения в имеющийся диапазон (добавляются или удаляются данные), они автоматически отражаются в раскрывающемся списке.
- Выделяем диапазон для выпадающего списка. В главном меню находим инструмент «Форматировать как таблицу».
- Откроются стили. Выбираем любой. Для решения нашей задачи дизайн не имеет значения. Наличие заголовка (шапки) важно. В нашем примере это ячейка А1 со словом «Деревья». То есть нужно выбрать стиль таблицы со строкой заголовка. Получаем следующий вид диапазона:
- Ставим курсор в ячейку, где будет находиться выпадающий список. Открываем параметры инструмента «Проверка данных» (выше описан путь). В поле «Источник» прописываем такую функцию:
Протестируем. Вот наша таблица со списком на одном листе:
Добавим в таблицу новое значение «елка».
Теперь удалим значение «береза».
Осуществить задуманное нам помогла «умная таблица», которая легка «расширяется», меняется.
Теперь сделаем так, чтобы можно было вводить новые значения прямо в ячейку с этим списком. И данные автоматически добавлялись в диапазон.
- Сформируем именованный диапазон. Путь: «Формулы» — «Диспетчер имен» — «Создать». Вводим уникальное название диапазона – ОК.
- Создаем раскрывающийся список в любой ячейке. Как это сделать, уже известно. Источник – имя диапазона: =деревья.
- Снимаем галочки на вкладках «Сообщение для ввода», «Сообщение об ошибке». Если этого не сделать, Excel не позволит нам вводить новые значения.
- Вызываем редактор Visual Basic. Для этого щелкаем правой кнопкой мыши по названию листа и переходим по вкладке «Исходный текст». Либо одновременно нажимаем клавиши Alt + F11. Копируем код (только вставьте свои параметры).
- Сохраняем, установив тип файла «с поддержкой макросов».
- Переходим на лист со списком. Вкладка «Разработчик» — «Код» — «Макросы». Сочетание клавиш для быстрого вызова – Alt + F8. Выбираем нужное имя. Нажимаем «Выполнить».
Private Sub Worksheet_Change(ByVal Target As Range) Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub If Target.Address = "$C$2" Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Range("Деревья"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & _ Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Range("Деревья").Cells(Range("Деревья").Rows.Count + 1, 1) = Target End If End If End If End Sub
Когда мы введем в пустую ячейку выпадающего списка новое наименование, появится сообщение: «Добавить введенное имя баобаб в выпадающий список?».
Нажмем «Да» и добавиться еще одна строка со значением «баобаб».
Выпадающий список в Excel с данными с другого листа/файла
Когда значения для выпадающего списка расположены на другом листе или в другой книге, стандартный способ не работает. Решить задачу можно с помощью функции ДВССЫЛ: она сформирует правильную ссылку на внешний источник информации.
- Делаем активной ячейку, куда хотим поместить раскрывающийся список.
- Открываем параметры проверки данных. В поле «Источник» вводим формулу: =ДВССЫЛ(“[Список1.xlsx]Лист1!$A$1:$A$9”).
Имя файла, из которого берется информация для списка, заключено в квадратные скобки. Этот файл должен быть открыт. Если книга с нужными значениями находится в другой папке, нужно указывать путь полностью.
Как сделать зависимые выпадающие списки
Возьмем три именованных диапазона:
Это обязательное условие. Выше описано, как сделать обычный список именованным диапазоном (с помощью «Диспетчера имен»). Помним, что имя не может содержать пробелов и знаков препинания.
- Создадим первый выпадающий список, куда войдут названия диапазонов.
- Когда поставили курсор в поле «Источник», переходим на лист и выделяем попеременно нужные ячейки.
- Теперь создадим второй раскрывающийся список. В нем должны отражаться те слова, которые соответствуют выбранному в первом списке названию. Если «Деревья», то «граб», «дуб» и т.д. Вводим в поле «Источник» функцию вида =ДВССЫЛ(E3). E3 – ячейка с именем первого диапазона.
- Создаем стандартный список с помощью инструмента «Проверка данных». Добавляем в исходный код листа готовый макрос. Как это делать, описано выше. С его помощью справа от выпадающего списка будут добавляться выбранные значения.
- Чтобы выбранные значения показывались снизу, вставляем другой код обработчика.
- Чтобы выбираемые значения отображались в одной ячейке, разделенные любым знаком препинания, применим такой модуль.
- На вкладке «Разработчик» находим инструмент «Вставить» – «ActiveX». Здесь нам нужна кнопка «Поле со списком» (ориентируемся на всплывающие подсказки).
- Щелкаем по значку – становится активным «Режим конструктора». Рисуем курсором (он становится «крестиком») небольшой прямоугольник – место будущего списка.
- Жмем «Свойства» – открывается перечень настроек.
- Вписываем диапазон в строку ListFillRange (руками). Ячейку, куда будет выводиться выбранное значение – в строку LinkedCell. Для изменения шрифта и размера – Font.
Выбор нескольких значений из выпадающего списка Excel
Бывает, когда из раскрывающегося списка необходимо выбрать сразу несколько элементов. Рассмотрим пути реализации задачи.
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("Е2:Е9")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset(0, 1)) = 0 Then Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("Н2:К2")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset(1, 0)) = 0 Then Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then
Application.EnableEvents = False
newVal = Target
Application.Undo
oldval = Target
If Len(oldval) <> 0 And oldval <> newVal Then
Target = Target & "," & newVal
Else
Target = newVal
End If
If Len(newVal) = 0 Then Target.ClearContents
Application.EnableEvents = True
End If
End Sub
Не забываем менять диапазоны на «свои». Списки создаем классическим способом. А всю остальную работу будут делать макросы.
Выпадающий список с поиском
Скачать пример выпадающего списка
При вводе первых букв с клавиатуры высвечиваются подходящие элементы. И это далеко не все приятные моменты данного инструмента. Здесь можно настраивать визуальное представление информации, указывать в качестве источника сразу два столбца.
Microsoft Excel: выпадающие списки
Смотрите также Next то подправьте эти и вниз до значений на листСписокПри использовании этого способа, диапазона:Важный нюанс. В качестве выбранное значение – исходный код листа lReply = MsgBox(«Добавить
указать диапазон ячеек соответствующий базе данных
Создание дополнительного списка
же книге, можно же свойства, как а затем кликаемПри работе в программеIf poisk Like параметры в макросе
конца — до (это так же» и указываем диапазон также возможно указыватьЭтот способ частично напоминает источника данных для в строку LinkedCell. готовый макрос. Как введенное имя « со списком. с городами. Если на другом листе. и в предыдущий по надписи «Параметры». Microsoft Excel в
«*» & TextBox1.Value на свои. последнего имени. позволит работать со списка в качестве предыдущий. Основное отличие
списка может выступать Для изменения шрифта это делать, описано & _ TargetНазначить имя для диапазона пользователь выберетМы будем использовать именованные раз, выделяем верхниеВ открывшемся окне переходим таблицах с повторяющимися & «*» ThenВсё! Теперь при попытке
Выделяем ячейку D2 и списком на любом3.ListFillRange в том, что и динамический именованный и размера – выше. С его
& » в значений и вPortugal диапазоны и сделаем ячейки, и при в подраздел «Настройка данными, очень удобноListBox1.AddItem sh.Name & ввести новое имяв Excel 2007 и листе). Делается этоЕсли есть желание
не только одномерные на лист добавляется диапазон, например прайс-лист. Font. помощью справа от выпадающий список?», vbYesNo поле источник вписать, то мы должны так, чтобы эти
Создание выпадающего списка с помощью инструментов разработчика
нажатой клавише мышки ленты», и ставим использовать выпадающий список. «!» & poisk.Address в ячейку D2 новее — жмем так: подсказать пользователю о диапазоны. Можно, например не элемент управления, Тогда при дописыванииСкачать пример выпадающего списка выпадающего списка будут + vbQuestion) If
это имя. обратиться к базе связанные выпадающие списки «протаскиваем» вниз. флажок напротив значения С его помощью
ListBox1.List(j, 1) = Excel будет спрашивать на вкладкеТо есть вручную, его действиях, то задать диапазон из а элемент ActiveX новых товаров кПри вводе первых букв добавляться выбранные значения.Private lReply = vbYesЛюбой из вариантов даст с индексом работали во всех
Всё, таблица создана. «Разработчик». Жмем на можно просто выбирать poisk… и при утвердительном
Данные (Data) через переходим во вкладку двух столбцов и
»Поле со списком» прайсу, они будут с клавиатуры высвечиваются Sub Worksheet_Change(ByVal Target Then Range(«Деревья»).Cells(Range(«Деревья»).Rows.Count + такой результат.3
версиях Excel. СледующийМы разобрались, как сделать кнопку «OK». нужные параметры изj = j + 1
ответе пользователя автоматическикнопку
; « нескольких строк, указавиз раскрывающегося набора автоматически добавляться к подходящие элементы. И As Range) On
Связанные списки
1, 1) =, в которой хранятся шаг – создать выпадающий список вПосле этого, на ленте сформированного меню. ДавайтеEnd If добавлять новое имяПроверка данных (Data Validation)(точка с запятой) вводимСообщение для ввода дополнительно, что выводить под кнопкой выпадающему списку. Еще это далеко не Error Resume Next
Target End IfНеобходимо сделать раскрывающийся список названия городов Португалии. именованные диапазоны для Экселе. В программе появляется вкладка с
выясним, как сделатьNext к списку вв Excel 2003 и список в поле
» и заполняем заголовок нужно два столбцаВставить (Insert) одним часто используемым все приятные моменты
If Not Intersect(Target, End If End со значениями из Мы воспользуемся функцией наших списков. На можно создавать, как названием «Разработчик», куда
раскрывающийся список различными
Next столбце А и старше — выбираем « и текст сообщения (свойствос вкладки трюком для таких
данного инструмента. Здесь
Range(«Е2:Е9»)) Is Nothing If End Sub динамического диапазона. ЕслиВПР вкладке простые выпадающие списки, мы и перемещаемся. способами.End Sub в выпадающий список в менюИсточниккоторое будет появляться
ColumnCount
lumpics.ru
Создаем связанные выпадающие списки в Excel – самый простой способ!
Разработчик (Developer) списков является создание можно настраивать визуальное And Target.Cells.Count =Сохраняем, установив тип файла вносятся изменения в(VLOOKUP) для поискаFormulas так и зависимые. Чертим в MicrosoftСкачать последнюю версиюОформляйте коды макросов в ячейку D2.Данные — Проверка (Data», в том порядке при выборе ячейки=2). Тогда можно получить: связанных выпадающих списков
представление информации, указывать 1 Then Application.EnableEvents «с поддержкой макросов». имеющийся диапазон (добавляются значения из ячейки(Формулы) есть команда При этом, можно Excel список, который Excel спецтегами — кнопкаSendex — Validation) в котором мы с выпадающим списком весьма привлекательные результаты,
Механизм добавления тот же (когда содержимое одного в качестве источника = False IfПереходим на лист со или удаляются данные),B1Name Manager использовать различные методы должен стать выпадающимСамым удобным, и одновременно # (поправил за: Всем привет!. хотим его видеть4. окупающие все потраченные — выбираем объект списка меняется в сразу два столбца. Len(Target.Offset(0, 1)) = списком. Вкладка «Разработчик» они автоматически отражаютсяв таблице с(Диспетчер имён). Нажав создания. Выбор зависит меню. Затем, кликаем наиболее функциональным способом Вас). И ПравилаИскал что-то подобное
Далее выбираем из выпадающего (значения введённые слева-направоТак же необязательно на дополнительные настройки из списка и зависимости от выбораУ кого мало времени 0 Then Target.Offset(0, — «Код» - в раскрывающемся списке. названиями стран. После на нее, откроется от конкретного предназначения
на Ленте на создания выпадающего списка, форума почитайте. обсуждавшееся, но не списка будут отображаться в можно создать и усилия: рисуем его на в другом). и нужно быстро 1) = Target «Макросы». Сочетание клавишВыделяем диапазон для выпадающего того как индекс диалоговое окно списка, целей его значок «Вставить», и
является метод, основанныйSLAVICK нашел.Тип данных (Allow) ячейке сверху вниз). сообщение, которое будетСпособ 1.
листе. А вотЭтот способ представляет собой ухватить суть - Else Target.End(xlToRight).Offset(0, 1) для быстрого вызова списка. В главном будет известен, мыName Manager создания, области применения, среди появившихся элементов на построении отдельного
: Попробуйте так:
В чем суть.позициюПри всех своих появляться при попытке
Примитивный дальше начинаются серьезные вставку на лист
смотрим обучающее видео: = Target End – Alt + меню находим инструмент выберем список, который(Диспетчер имён). и т.д. в группе «Элемент списка данных.200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub TextBox1_Change() Допустим есть список:Список (List) плюсах выпадающий список, ввести неправильные данныеСпособ 2. отличия от предыдущего нового объекта -
Кому интересны подробности и If Target.ClearContents Application.EnableEvents F8. Выбираем нужное
«Форматировать как таблицу». станет источником данныхНажмите кнопкуАвтор: Максим Тютюшев ActiveX» выбираем «ПолеПрежде всего, делаем таблицу-заготовку,Dim j Asполотенце зеленоеи вводим в созданный вышеописанным образом,Если Вы неСтандартный способа. элемента управления «поле нюансы всех описанных = True End имя. Нажимаем «Выполнить».Откроются стили. Выбираем любой. для нашего второгоNewПРЕДСТАВЬТЕ СИТУАЦИЮ: со списком». где собираемся использовать Long, i Asполено дубовое строку имеет один, но сделаете пункты 3Способ 3.Во-первых, созданный выпадающий ActiveX со списком» с способов — дальше If End SubКогда мы введем в Для решения нашей выпадающего списка. Для(Создать), чтобы добавитьМы хотим создатьКликаем по месту, где выпадающее меню, а Long, poisk Asтелефон новыйИсточник (Source) очень «жирный» минус: и 4, тоЭлемент управления список может находится последующей привязкой его по тексту.Чтобы выбранные значения показывались пустую ячейку выпадающего задачи дизайн не этого напишем такую новый именованный диапазон. в Excel небольшую
должна быть ячейка
также делаем отдельным
Range, iAdr$, LT%,переполох в душессылку на созданный проверка данных работаетпроверка данныхСпособ 4. в двух принципиально к диапазонам наОдин щелчок правой кнопкой снизу, вставляем другой списка новое наименование, имеет значения. Наличие
формулу: Откроется диалоговое окно табличку, где можно
со списком. Как списком данные, которые sh As WorksheetВ ячейке начинаем на шаге 1 только при непосредственномработать будет, ноЭлемент ActiveX разных состояниях - листе. Для этого:
мыши по пустой код обработчика.Private Sub появится сообщение: «Добавить заголовка (шапки) важно.=CHOOSE(VLOOKUP(B1,Sheet3!$A$3:$B$5,2,FALSE),England,France,Portugal)New Name выбрать страну и видите, форма списка в будущем включим
ListBox1.Clear писать «пол» и
именованный диапазон (
вводе значений с
при активации ячейки
office-guru.ru
Выпадающий список в Excel с помощью инструментов или макросов
Сложность режиме отладки, когдаВ Excel 2007/2010 откройте ячейке под столбцом Worksheet_Change(ByVal Target As введенное имя баобаб В нашем примере
=ВЫБОР(ВПР(B1;Sheet3!$A$3:$B$5;2;ЛОЖЬ);England;France;Portugal)(Создание имени). соответствующий ей город. появилась. в это меню.LT = Len(TextBox1.Value) тут же выпадаетне забудьте перед именем клавиатуры. Если Вы не будет появляться
Создание раскрывающегося списка
низкая можно настраивать его вкладку с данными, команда Range) On Error
в выпадающий список?». это ячейка А1Что же делает этаВ поле
- При этом сЗатем мы перемещаемся в
- Эти данные можноIf LT = список со строками, диапазона поставить знак
- попытаетесь вставить в сообщение пользователю осредняя параметры и свойства,
Разработчик (Developer) контекстного меню
Resume Next If
Выпадающий список в Excel с подстановкой данных
Нажмем «Да» и добавиться со словом «Деревья». формула? Она ищетName помощью выпадающих списков, «Режим конструктора». Жмем размещать как на 0 Then Exit
- в которых содержится равенства! ячейку с его предполагаемых действиях,
- высокая двигать его по. В более раннихВыбрать из раскрывающегося списка Not Intersect(Target, Range(«Н2:К2»)) еще одна строка То есть нужно значение из ячейки(Имя) введите имя необходимо ограничить доступные на кнопку «Свойства этом же листе Sub
- эта комбинация:):проверкой данных а вместо сообщенияВозможность настройки шрифта, цвета листу и менять версиях — панель(Choose from drop-down list)
Is Nothing And со значением «баобаб». выбрать стиль таблицы
B1Country
пользователям варианты стран
элемента управления». документа, так иj = 0
ПОЛотенце зеленоеЧтобы Excel позволил намзначения из буфера об ошибке с и т.д. размеры и - инструментов
- или нажать сочетание Target.Cells.Count = 1Когда значения для выпадающего со строкой заголовка.в списке стран
- для нашего первого и городов, изОткрывается окно свойств элемента на другом, еслиiAdr = Sheets(1).UsedRange.Address
- ПОЛено дубовое в будущем ввести обмена, т.е скопированные вашим текстом будетнет режиме ввода, когдаФормы (Forms)
- клавиш Then Application.EnableEvents = списка расположены на Получаем следующий вид и возвращает соответствующий именованного диапазона, а которых они могут управления. В графе вы не хотите,iAdr = Mid(iAdr,переПОЛох в душе в список и предварительно любым способом, появляться стандартное сообщение.нет единственное, что можночерез менюALT+стрелка вниз False If Len(Target.Offset(1, другом листе или диапазона: индекс, который затем в поле выбирать. В первой «ListFillRange» вручную через чтобы обе таблице InStr(iAdr, «:») +Дописываем дальше, «поле» новые имена, снимем то Вам это5.да — выбирать из
- Вид — Панели инструментов. Способ не работает,
- 0)) = 0 в другой книге,Ставим курсор в ячейку, использует функцияRefers to ячейке мы сделаем двоеточие прописываем диапазон располагались визуально вместе.
1) — остается для галочки на вкладках удастся. Более того,Если список значенийКоличество отображаемых строк
него данные. Переключение — Формы (View если ячейку и
Выпадающий список в Excel с данными с другого листа/файла
Then Target.Offset(1, 0) стандартный способ не где будет находитьсяCHOOSE(Диапазон) выберите тот, выбор страны, а ячеек таблицы, данныеВыделяем данные, которые планируемSet sh = выбора одно ПоленоСообщение для ввода (Input
- вставленное значение из находится на другомвсегда 8
- между этими режимами — Toolbars - столбец с данными
= Target Else работает. Решить задачу выпадающий список. Открываем(ВЫБОР), чтобы выбрать в котором хранится во второй будут которой будут формировать занести в раскрывающийся ActiveSheet дубовое.
Как сделать зависимые выпадающие списки
Message)
буфера УДАЛИТ ПРОВЕРКУ листе, то вышеописаннымлюбое происходит с помощью Forms) отделяет хотя бы Target.End(xlDown).Offset(1, 0) = можно с помощью
- параметры инструмента «Проверка 1-й, 2-й или список стран:
- доступны только принадлежащие пункты выпадающего списка. список. Кликаем правойFor Each poiskПодскажите варианты плз.
- и ДАННЫХ И ВЫПАДАЮЩИЙ образом создать выпадающийБыстрый поиск элемента по кнопки. Если этой вкладки одна пустая строка Target End If функции ДВССЫЛ: она данных» (выше описан 3-й именованный диапазон.=Sheet3!$A$3:$A$5 выбранной стране города.
Выбор нескольких значений из выпадающего списка Excel
Далее, кликаем по ячейке, кнопкой мыши, и In Range(«d1:d100»)СпасибоСообщение об ошибке (Error
- СПИСОК ИЗ ЯЧЕЙКИ, список не получится первым буквамРежим Конструктора (Design Mode) не видно, то или вам нужен Target.ClearContents Application.EnableEvents = сформирует правильную ссылку путь). В полеВот так будет выглядетьНажмите Думаю, это понятно? и в контекстном в контекстном менюOn Error ResumeSLAVICK Alert) в которую вставили (до версии Excelнетна вкладке нажмите кнопку товар, который еще True End If на внешний источник «Источник» прописываем такую
- наш второй раскрывающийсяОКИтак, давайте начнём наш меню последовательно переходим выбираем пункт «Присвоить Next: Без примера -и нажмем предварительно скопированное значение. 2010). Для этогонетРазработчик (Developer)Офис — Параметры Excel ни разу не End Sub информации. функцию: список:, чтобы сохранить и
- простой пример с по пунктам «Объект имя…».If poisk Like только ссылка на
ОК Избежать этого штатными
необходимо будет присвоитьда
:- вводился выше:Чтобы выбираемые значения отображались
Делаем активной ячейку, куда
Протестируем. Вот наша таблица
В результате мы получим
закрыть диалоговое окно.
того, как можно ComboBox» и «Edit».Открывается форма создания имени.
"*" & TextBox1.Value похожую тему. Теперь у нас
средствами Excel нельзя.
имя списку. Это
Необходимость использования дополнительной функции
Если эта кнопка нажата,флажок
Выделите ячейки с данными,
в одной ячейке,
хотим поместить раскрывающийся
со списком на два связанных (илиИмена диапазонам, содержащим города, создать связанный (илиВыпадающий список в Microsoft В поле «Имя»
Выпадающий список с поиском
- & «*» ThenНаверное ближе будет есть выпадающий списокЗадача можно сделать несколькоИНДЕКС
- то мы можемОтображать вкладку Разработчик на которые должны попасть разделенные любым знаком список. одном листе:
- зависимых) выпадающих списка. можно присвоить точно
- зависимый) выпадающий список Excel готов. вписываем любое удобноеListBox1.AddItem sh.Name & Эта тема - в ячейке D2.: сделать в ячейке способами.
нет
настраивать параметры выпадающего ленте (Office Button в выпадающий список препинания, применим такойОткрываем параметры проверки данных.Добавим в таблицу новое Если мы выбираем таким же образом. в Excel? ВЧтобы сделать и другие
exceltable.com
Выпадающий список в ячейке листа
Видео
наименование, по которому «!» & poisk.Address там в примере Причем, если, например,
D2 выпадающий список,Первыйда списка, нажав соседнюю
Способ 1. Примитивный
— Excel Options (например, наименованиями товаров). модуль. В поле «Источник» значение «елка». страну Теперь мы можем создать ячейке ячейки с выпадающим будем узнавать данныйListBox1.List(j, 1) = нужно нажать кнопку вручную дописать новое чтобы пользователь мог: выделите список инет кнопку — Show DeveloperЕсли у вас Excel
Способ 2. Стандартный
- Private Sub Worksheet_Change(ByVal вводим формулу: =ДВССЫЛ(“[Список1.xlsx]Лист1!$A$1:$A$9”).Теперь удалим значение «береза».France
- выпадающие списки вB1 списком, просто становимся список. Но, это poisk найти. имя в столбце выбирать имена из кликните правой кнопкойВозможность создания связанных выпадающихСвойства (Properties) Tab in the 2003 или старше Target As Range)Имя файла, из которогоОсуществить задуманное нам помогла, в связанном списке тех ячейках, гдемы будем выбирать на нижний правый наименование должно начинатьсяj = j + 1Wasilich А, то оно списка (столбец А). мыши, в контекстном
- списков, которая откроет окно Ribbon) — выберите вOn Error Resume берется информация для «умная таблица», которая у нас будут планировали выбирать данные. страну, а в край готовой ячейки, обязательно с буквы.End If: Видно надо, что автоматически появится в Если нужного имени меню выберите «нет со списком всех
Найдите значок выпадающего списка меню Next
списка, заключено в
легка «расширяется», меняется. города только из Выделите ячейку ячейке нажимаем кнопку мыши, Можно также вписатьNext то вроде этого! выпадающем списке в нет в списке,Присвоить имяда возможных настроек для среди элементов управленияВставка — Имя -If Not Intersect(Target, квадратные скобки. ЭтотТеперь сделаем так, чтобы
Способ 3. Элемент управления
Франции.B1B2 и протягиваем вниз. примечание, но этоEnd SubSendex ячейке D2, поскольку
- то пользователь может»нет выделенного объекта: форм (не ActiveX!). Присвоить Range(«C2:C5»)) Is Nothing файл должен быть можно было вводитьИз этой статьи Вы(в ней мы– принадлежащий ейТакже, в программе Excel не обязательно. Жмемздесь будет поиск: имена берутся из ввести новое имяДля Excel версийВыпадающий список вСамые нужные и полезные Ориентируйтесь по всплывающим(Insert — Name - And Target.Cells.Count =
- открыт. Если книга новые значения прямо узнали, как можно будем выбирать страну), город, как на можно создавать связанные на кнопку «OK».
в диапазоне Range(«d1:d100»).SLAVICK динамического диапазона People, прямо в ячейку - ниже 2007 те ячейке позволяет пользователю свойства, которые можно подсказкам - Define), 1 Then
- с нужными значениями в ячейку с сделать простейшие связанные откройте вкладку примере:
- выпадающие списки. ЭтоПереходим во вкладку «Данные»Лучше указывать не, спасибо! Второй вариант который автоматически отслеживает
- D2 — оно же действия выглядят выбирать для ввода и нужно настроить:Поле со спискомесли Excel 2007Application.EnableEvents = False находится в другой
этим списком. И выпадающие списки вData
Для начала нужно создать такие списки, когда программы Microsoft Excel. весь столбец а — очень похоже изменения в столбце автоматически добавится к так: только заданные значения.
Способ 4. Элемент ActiveX
ListFillRange: или новее -newVal = Target папке, нужно указывать данные автоматически добавлялись Microsoft Excel. Вы(Данные), нажмите базу данных. На при выборе одного Выделяем область таблицы, диапазон(можно с запасом), на то что
А. столбцу А иВторой Это особенно удобно- диапазон ячеек,Щелкните по значку откройте вкладкуApplication.Undo
путь полностью. в диапазон. можете взять этотData Validation втором листе я значения из списка, где собираемся применять иначе будет тормозить. нужно, который сЩелкаем правой кнопкой мыши начнет отображаться в: воспользуйтесь при работе с откуда берутся данные и нарисуйте небольшойФормулы (Formulas)oldval = TargetВозьмем три именованных диапазона:Сформируем именованный диапазон. Путь: простой пример и(Проверка данных), а
занес список стран, в другой графе выпадающий список. ЖмемWasilich кнопкой «Найти» по ярлычку нашего выпадающем списке вДиспетчером имён файлами структурированными как для списка. Выделить
горизонтальный прямоугольник -и воспользуйтесь кнопкойIf Len(oldval) <>
- Это обязательное условие. Выше «Формулы» — «Диспетчер использовать его для затем в выпадающем которые хочу дать предлагается выбрать соответствующие на кнопку «Проверка:Только он ищет
- листа и выбираем будущем. Вот так(Excel версий выше база данных, когда мышью диапазон он
- будущий список.Диспетчер имен (Name Manager) 0 And oldval
- описано, как сделать имен» — «Создать». решения реальных задач. меню выберите пользователям на выбор
- ему параметры. Например, данных», расположенную наSendex совпадения по всемИсходный текст (View Source)
примерно: 2003 — вкладка ввод несоответствующего значения не даст, надоЩелкните по нарисованному списку, затем <> newVal Then обычный список именованным Вводим уникальное названиеУрок подготовлен для ВасData Validation в первом раскрывающемся при выборе в
Ленте., я так понял, листам, а в. Откроется модуль листаСначала создадим именованный диапазон, « в поле может просто вписать его правой кнопкой мышиСоздатьTarget = Target диапазоном (с помощью диапазона – ОК. командой сайта office-guru.ru(Проверка данных). списке, а в списке продуктов картофеля,Открывается окно проверки вводимых
Итоговая сравнительная таблица всех способов
у Вас WinRAR-a моем случае нужно | в редакторе Visual указывающий на заполненные | Формулы привести к нежелаемым | руками с клавиатуры и выберите команду | |
. Введите имя (можно | & «,» & | «Диспетчера имен»). Помним, | Создаем раскрывающийся список в | |
Источник: http://www.excel-user.com/2011/02/cascading-validation-lists.htmlОткроется диалоговое окно | соседнем столбце указал | предлагается выбрать как | значений. Во вкладке | |
нет? Или не | искать по определенному | Basic, куда надо | ||
именами ячейки в» — группа « | результатам. | (например, Лист2!A1:A5) | Формат объекта (Format control) | |
любое, но обязательно newVal | что имя не | любой ячейке. Как | Перевел: Антон Андронов | |
Data Validation числовой индекс, который | меры измерения килограммы | «Параметры» в поле | подходит? Считаю, отзываться |
planetaexcel.ru
Создание выпадающего списка в ячейке
столбцу. скопировать такой код: столбце А -Определённые именаИтак, для созданияLinkedCell. В появившемся диалоговом без пробелов иElse может содержать пробелов это сделать, ужеАвтор: Антон Андронов
(Проверка вводимых значений). соответствует одному из
и граммы, а «Тип данных» выбираем надо бы вПодскажите пож, какPrivate Sub Worksheet_Change(ByVal сколько бы имен»), который в любой выпадающего списка необходимо:- связанная ячейка, окне задайте начать с буквы!)Target = newVal и знаков препинания. известно. Источник –Под выпадающим списком понимаетсяМы хотим дать пользователю списков городов. Списки при выборе масла параметр «Список». В любом случае. именно указать конкретный
Target As Range) в списке не версии Excel вызывается1.
куда будет выводитьсяФормировать список по диапазону для выделенного диапазонаEnd IfСоздадим первый выпадающий список, имя диапазона: =деревья. содержание в одной
на выбор список городов располагаются правее растительного – литры поле «Источник» ставимНа случай отсутствия диапазон? Dim lReply As находилось. Для этого: сочетанием клавиш
Создать список значений, выбранный из списка- выделите ячейки
(напримерIf Len(newVal) = куда войдут названияСнимаем галочки на вкладках ячейке нескольких значений. вариантов, поэтому в
в столбцах и миллилитры. знак равно, и архиватора, сократил размерПонимаю, что нужно Long If Target.Cells.Countв Excel 2007 иCtrl+F3 которые будут предоставляться элемент с наименованиями товаров,Товары 0 Then Target.ClearContents
диапазонов. «Сообщение для ввода», Когда пользователь щелкает полеDПрежде всего, подготовим таблицу, сразу без пробелов примера. заменить For Each > 1 Then новее — жмем. на выбор пользователюListRows которые должны попасть). НажмитеApplication.EnableEvents = TrueКогда поставили курсор в «Сообщение об ошибке».
по стрелочке справа,Allow, где будут располагаться
пишем имя списка,Sendex sh In ActiveWorkbook.Sheets Exit Sub If на вкладкеКакой бы способ (в нашем примере- количество отображаемых в списокОКEnd If поле «Источник», переходим Если этого не появляется определенный перечень.
(Тип данных) выберитеF выпадающие списки, и которое присвоили ему: на столбец, но Target.Address = «$D$2″Формулы (Formulas) Вы не выбрали это диапазон строкСвязь с ячейкой
.End Sub на лист и сделать, Excel не Можно выбрать конкретное.
Listи
отдельно сделаем списки выше. Жмем наWasilic все криво выходит. Then If IsEmpty(Target)кнопку в итоге ВыM1:M3Font- укажите ячейкуВыделите ячейки (можно сразуНе забываем менять диапазоны
выделяем попеременно нужные позволит нам вводитьОчень удобный инструмент Excel(Список). Это активируетH с наименованием продуктов кнопку «OK»., у меня наЗаранее спасибо! Then Exit SubДиспетчер имен (Name Manager) должны будете ввести), далее выбрать ячейку
- шрифт, размер, куда нужно выводить несколько), в которых на «свои». Списки ячейки. новые значения. для проверки введенных поле. Так, например, рядом и мер измерения.Выпадающий список готов. Теперь, Ваш первый файл200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub TextBox1_Change() If WorksheetFunction.CountIf(Range(«People»), Target)и затем имя (я назвал в которой будет начертание (курсив, подчеркивание порядковый номер выбранного хотите получить выпадающий создаем классическим способом.Теперь создадим второй раскрывающийсяВызываем редактор Visual Basic. данных. Повысить комфортSource
excelworld.ru
Выпадающий список с добавлением новых элементов
сПрисваиваем каждому из списков при нажатии на антивирь ругнулся, поэтомуDim j As = 0 ThenСоздать (New) диапазон со списком выпадающий список (в и т.д. кроме пользователем элемента. список и выберите А всю остальную список. В нем Для этого щелкаем работы с данными(Источник), где необходимоFrance
Шаг 1. Создаем именованный диапазон
именованный диапазон, как кнопку у каждой после того что Long, i As lReply = MsgBox(«Добавитьв Excel 2003 идемlist
- нашем примере это цвета)Количество строк списка в меню (на работу будут делать должны отражаться те правой кнопкой мыши позволяют возможности выпадающих
- указать имя диапазонастоит индекс это мы уже ячейки указанного диапазона уже
Long, poisk As введенное имя « в меню) и адрес самого ячейкаForeColor
- сколько строк
вкладке) макросы.
слова, которые соответствуют
по названию листа списков: подстановка данных, со странами. Введите2 делали ранее с будет появляться списокSLAVICK
Шаг 2. Создаем выпадающий список в ячейке
Range, iAdr$, LT%,
- & _ TargetВставка — Имя - диапазона (в нашемК1и показывать в выпадающем
- Данные — Проверка (DataНа вкладке «Разработчик» находим выбранному в первом и переходим по отображение данных другого в этом поле
, который соответствует списку обычными выпадающими списками. параметров, среди которыхпредложил, не стал sh As Worksheet & » в Присвоить (Insert - примере это), потом зайти воBackColor списке. По умолчанию — Validation) инструмент «Вставить» – списке названию. Если вкладке «Исходный текст».
листа или файла, «=Country» и жмите городовВ первой ячейке создаём можно выбрать любой больше пробовать.ListBox1.Clear выпадающий список?», vbYesNo Name — Define)’2′!$A$1:$A$3 вкладку «- цвет текста — 8, но. Из выпадающего списка «ActiveX». Здесь нам «Деревья», то «граб», Либо одновременно нажимаем наличие функции поискаОК2 список точно таким для добавления вСейчас посмотрел, этоLT = Len(TextBox1.Value) + vbQuestion) IfЗатем вводим имя диапазона)
Шаг 3. Добавляем простой макрос
Данные и фона, соответственно можно больше, чегоТип данных (Allow) нужна кнопка «Поле «дуб» и т.д. клавиши Alt + и зависимости.
. Теперь нам нужно. Позже Вы увидите, же образом, как ячейку. максимально упрощенный вариант,If LT = lReply = vbYes (допустим6.», группа «Большим и жирным плюсом не позволяет предыдущийвыберите вариант со списком» (ориентируемся Вводим в поле F11. Копируем кодПуть: меню «Данные» - сделать второй раскрывающийся как этот индекс делали это ранее,Второй способ предполагает создание тоже возьму на 0 Then Exit
Then Range(«People»).Cells(Range(«People»).Rows.Count +PeopleТеперь в ячейкеРабота с данными этого способа является способ.Список (List) на всплывающие подсказки). «Источник» функцию вида (только вставьте свои
инструмент «Проверка данных» список, чтобы пользователи будет использован. через проверку данных.
выпадающего списка с заметку. В любом Sub 1, 1) =) и в строку с выпадающим списком», кнопка «
planetaexcel.ru
Выпадающее меню со списком, содержащим вводимые буквы. (Макросы/Sub)
возможность быстрого переходаПосле нажатия на
и введите вЩелкаем по значку – =ДВССЫЛ(E3). E3 –
параметры).Private Sub Worksheet_Change(ByVal — вкладка «Параметры».
могли выбрать город.
Если Вы работаете в
Во второй ячейке тоже
помощью инструментов разработчика,
случае — большоеj = 0 Target End IfСсылка (Reference) укажите в полеПроверка данных
к нужному элементу
ОК
строчку
становится активным «Режим ячейка с именем Target As Range) Тип данных –
Мы поместим этот
Excel 2010, то
запускаем окно проверки а именно с спасибо за отклик!iAdr = Sheets(1).UsedRange.Address
End If Endвводим следующую формулу: «Источник» имя диапазона» в списке при
списком можно пользоваться.Источник (Source) конструктора». Рисуем курсором
первого диапазона. Dim lReply As «Список». раскрывающийся список в можете создать лист-источник данных, но в использованием ActiveX. По И сорри, что
iAdr = Mid(iAdr, If End Sub=СМЕЩ(Лист1!$A$1;0;0;СЧЁТЗ(Лист1!$A$1:$A$24);1)7.Для Excel версий вводе первых букв
Чтобы вместо порядкового номеразнак равенства и (он становится «крестиком»)
Бывает, когда из раскрывающегося Long If Target.Cells.CountВвести значения, из которых ячейку в отдельной рабочей
графе «Источник» вводим
умолчанию, функции инструментов
не вовремя. InStr(iAdr, ":") +Если Ваш выпадающий списокв английской версии ExcelГотово!
ниже 2007 те
с клавиатуры(!), чего
элемента выводилось его имя диапазона (т.е. небольшой прямоугольник –
списка необходимо выбрать
> 1 Then
будет складываться выпадающийB2 книге. Если же
функцию «=ДВССЫЛ» и разработчика отсутствуют, поэтому
SLAVICK 1)
находится не в это будет:
Для полноты картины же действия выглядят нет у всех
название можно дополнительно=Товары
место будущего списка. сразу несколько элементов.
Exit Sub If
список, можно разными
. А теперь внимание
у Вас версия
адрес первой ячейки.
нам, прежде всего,, спасибо за обаFor Each sh ячейке D2 или=OFFSET(Лист1!$A$1,0,0,COUNTA(Лист1!$A$1:$A$24),1)
добавлю, что список так:
остальных способов. Приятным
использовать функцию).Жмем «Свойства» – открывается Рассмотрим пути реализации Target.Address = "$C$2"
способами:
– фокус! Нам
Excel 2003 года, Например, =ДВССЫЛ($B3). нужно будет их
варианта! И отдельное
In ActiveWorkbook.Sheets
Вы назвали диапазонЭта формула ссылается на значений можно ввести
2. моментом, также, является
ИНДЕКС (INDEX)Нажмите
перечень настроек. задачи.
Then If IsEmpty(Target)Вручную через «точку-с-запятой» в нужно проверить содержимое
и Вы планируетеКак видим, список создан.
включить. Для этого, огромное спасибо за
For Each poisk
с именами не
все заполненные ячейки
и непосредственно в
Выбираем « возможность настройки визуального
, которая умеет выводитьОКВписываем диапазон в строкуСоздаем стандартный список с
Then Exit Sub поле «Источник». ячейки с названием использовать именованный диапазон,Теперь, чтобы и нижние переходим во вкладку доработку, все работает In sh.UsedRangePeople
в столбце А, проверку данных, неТип данных
представления (цветов, шрифтов содержимое нужной по. ListFillRange (руками). Ячейку, помощью инструмента «Проверка If WorksheetFunction.CountIf(Range(«Деревья»), Target)Ввести значения заранее. А страны (ячейка B1), то значения должны ячейки приобрели те «Файл» программы Excel,
как надо!On Error Resume, а как-то еще, начиная с А1 прибегая к вынесению» -« и т.д.) счету ячейки из
Все! Наслаждайтесь! куда будет выводиться данных». Добавляем в = 0 Then в качестве источника чтобы получить индекс
excelworld.ru
находиться в той
Содержание
- Макрос выпадающего списка с несколькими значениями в Excel
- Для начала следует создать обыкновенный выпадающий список.
- После этой процедуры следует записать макрос в документ.
- Первый макрос со смещением списка в сторону (горизонтально).
- Макрос выпадающего списка со смещением вниз:
- Макрос выпадающего списка с внесением нескольких значений в одну ячейку:
- Макрос выпадающего списка с несколькими значениями в Excel: 17 комментариев
- VBA Excel. Элемент управления ComboBox (поле со списком)
- Элемент управления ComboBox
- Свойства поля со списком
- Способы заполнения ComboBox
- Excel раскрывающийся список макрос
- Как запустить макрос на основе значения, выбранного из раскрывающегося списка в Excel?
- Запустить макрос на основе значения, выбранного из раскрывающегося списка с кодом VBA
Макрос выпадающего списка с несколькими значениями в Excel
Ранее в публикациях рассказывалось о том, как создается выпадающий список в ячейках для упрощения внесения данных.
Ссылка на описания метода создания связанного выпадающего списка ниже:
В данной публикации описана процедура создания выпадающих списков, которые записывают в ячейки по нескольку значений.
Для начала следует создать обыкновенный выпадающий список.
Для этого необходимо:
- Войти во вкладку «Данные»;
- Выбрать опцию «Проверка данных»;
- Выбрать «Список»;
- Указать диапазон, из которого будет выбираться выпадающий список или создать список прямо в появившемся поле через знак «;».
После этой процедуры следует записать макрос в документ.
Для записи макроса следует:
- Открыть вкладку «Разработчик» ( Если вкладка отключена, включите ее в разделе Файл=> Параметры=> Настройка Ленты);
- Во вкладке «Разработчик» выбрать кнопку «Просмотр кода»;
- В открывшееся окно записать макрос;
- Закрыть окно с макросом.
Давайте рассмотрим несколько макросов с выпадающими списками.
Первый макрос со смещением списка в сторону (горизонтально).
Текст макроса:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range(«B2:B10»)) Is Nothing And Target.Cells.Count = 1 Then
Application.EnableEvents = False
If Len(Target.Offset(0, 1)) = 0 Then
Target.Offset(0, 1) = Target
Else
Target.End(xlToRight).Offset(0, 1) = Target
End If
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
Необходимо обратить внимание, что в строке :
If Not Intersect(Target, Range(«B1:B10»)) Is Nothing And Target.Cells.Count = 1 Then
Значения («B1:B10»)— это диапазон в пределах которого будет работать выпадающий список.
Аналогичным образом можно создать выпадающий список со смещением вниз и выпадающий список, записывающий в ячейку несколько значений через знак табуляции или пробел.
Макрос выпадающего списка со смещением вниз:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range(«C2:F2»)) Is Nothing And Target.Cells.Count = 1 Then
Application.EnableEvents = False
If Len(Target.Offset(1, 0)) = 0 Then
Target.Offset(1, 0) = Target
Else
Target.End(xlDown).Offset(1, 0) = Target
End If
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
Макрос выпадающего списка с внесением нескольких значений в одну ячейку:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range(«B2:B5»)) Is Nothing And Target.Cells.Count = 1 Then
Application.EnableEvents = False
newVal = Target
Application.Undo
oldval = Target
If Len(oldval) <> 0 And oldval <> newVal Then
Target = Target & «//» & newVal
Else
Target = newVal
End If
If Len(newVal) = 0 Then Target.ClearContents
Application.EnableEvents = True
End If
End Sub
В строке If Not Intersect(Target, Range(«B2:B5»)) Is Nothing And Target.Cells.Count = 1 Then
указывается диапазон действия макроса.
В строке
Target = Target & «//» & newVal
указывается разделитель «//». Его можно заменить на любой знак препинания, текст или поставить пробел.
Макрос выпадающего списка с несколькими значениями в Excel: 17 комментариев
Добрый день! Макрос выпадающего списка с внесением нескольких значений в одну ячейку почему то не работает. Нижеприведенные строки почему то становятся красным. Я так понимаю В2:В5 это диапазон который можно изменять на другую область например на F2:F200 допучстим? Или я не прав? Подскажите пожалуйста.
Источник
VBA Excel. Элемент управления ComboBox (поле со списком)
Элемент управления пользовательской формы ComboBox для выбора и ввода информации в VBA Excel. Свойства поля с раскрывающимся списком, заполнение, извлечение данных, примеры кода.
Элемент управления ComboBox
ComboBox представляет из себя комбинацию двух элементов управления: текстового поля (TextBox) и списка (ListBox), поэтому его еще называют «комбинированным списком» или «полем со списком». Также ComboBox сочетает в себе свойства этих двух элементов управления.
Изначально комбинированный список прорисовывается на форме в виде текстового поля с кнопкой для отображения раскрывающегося списка. Далее по тексту будем использовать слово «поле» в значении текстового поля в составе элемента управления ComboBox, а словосочетание «раскрывающийся список» – в значении списка в составе элемента управления ComboBox.
Поле со списком используется в тех случаях, когда необходимо добавить в форму информацию, которая заранее известна, а ее отдельные позиции можно сгруппировать в список, а также для ручного ввода с клавиатуры или вставки из буфера обмена, если необходимое значение в списке отсутствует.
Элемент управления ComboBox незаменим при больших списках. При списках из нескольких позиций его можно заменить на ListBox, который отображает позиции для выбора сразу после загрузки формы, не требуя дополнительных действий от пользователя.
Свойства поля со списком
Свойство | Описание |
---|---|
AutoSize | Автоподбор размера комбинированного поля. True – размер автоматически подстраивается под длину выбранной или введенной строки. False – размер элемента управления определяется свойствами Width и Height. |
AutoTab | Включение автоматической табуляции – передачи фокуса следующему элементу управления при достижении максимального числа символов при значениях свойства MaxLenght > 0. True – автоматическая табуляция включена, False – выключена. |
ColumnCount | Указывает количество столбцов в раскрывающемся списке. Значение по умолчанию = 1. |
ColumnHeads | Добавляет строку заголовков в раскрывающийся список. True – заголовки столбцов включены, False – заголовки столбцов выключены. Значение по умолчанию = False. |
ColumnWidths | Ширина столбцов в раскрывающемся списке. Значения для нескольких столбцов указываются в одну строку через точку с запятой (;). |
ControlSource | Ссылка на ячейку для ее привязки к элементу управления ComboBox. |
ControlTipText | Текст всплывающей подсказки при наведении курсора на элемент управления. |
Enabled | Доступ пользователя к полю и раскрывающемуся списку. True – доступ разрешен, False – доступ запрещен*. Значение по умолчанию = True. |
Font | Шрифт, начертание и размер текста в поле. |
Height | Высота элемента управления ComboBox. |
Left | Расстояние от левого края внутренней границы пользовательской формы до левого края комбинированного списка. |
List | Позволяет заполнить ComboBox данными из одномерного или двухмерного массива, а также обращаться к отдельным элементам раскрывающегося списка по индексам для записи и чтения. |
ListIndex | Номер выбранной пользователем строки в раскрывающемся списке. Нумерация начинается с нуля. Если ничего не выбрано, ListIndex = -1. |
ListRows | Количество видимых строк в раскрытом списке. Если общее количество строк больше ListRows, появляется полоса прокрутки. Значение по умолчанию = 8. |
Locked | Запрет на отображение раскрывающегося списка, ввод и редактирование данных в поле. True – ввод и редактирование запрещены**, False – ввод и редактирование разрешены. Значение по умолчанию = False. |
MatchRequired | Задает проверку вводимых в поле строк с элементами списка. True – проверка включена (допускается ввод только строк, совпадающих с элементами списка), False – проверка выключена (допускается ввод любых строк). Значение по умолчанию = False. |
MaxLenght | Максимальная длина строки в поле. Значение по умолчанию = 0, что означает – ограничений нет. |
RowSource | Источник строк для раскрывающегося списка (адрес диапазона на рабочем листе Excel). |
TabIndex | Целое число, определяющее позицию элемента управления в очереди на получение фокуса при табуляции. Отсчет начинается с 0. |
Text | Текстовое содержимое (значение) поля (=Value). |
TextAlign | Выравнивание текста в поле: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю. |
Top | Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края комбинированного списка. |
Value | Текстовое содержимое (значение) поля (=Text). |
Visible | Видимость поля со списком. True – ComboBox отображается на пользовательской форме, False – ComboBox скрыт. |
Width | Ширина элемента управления. |
* При Enabled в значении False пользователь не может раскрывать список, а также вводить или редактировать данные в поле.
** Для элемента управления ComboBox действие свойства Locked в значении True аналогично действию свойства Enabled в значении False.
В таблице перечислены только основные, часто используемые свойства поля со списком. Еще больше доступных свойств отображено в окне Properties элемента управления ComboBox, а все методы, события и свойства – в окне Object Browser.
Вызывается Object Browser нажатием клавиши «F2». Слева выберите объект ComboBox, а справа смотрите его методы, события и свойства.
Свойства BackColor, BackStyle, BorderColor, BorderStyle отвечают за внешнее оформление комбинированного списка и его границ. Попробуйте выбирать доступные значения этих свойств в окне Properties, наблюдая за изменениями внешнего вида элемента управления ComboBox на проекте пользовательской формы.
Способы заполнения ComboBox
Используйте метод AddItem для загрузки элементов в поле со списком по одному:
Источник
Excel раскрывающийся список макрос
Как запустить макрос на основе значения, выбранного из раскрывающегося списка в Excel?
Запуск макросов путем нажатия кнопки управления — обычная задача в Excel, но пытались ли вы когда-нибудь выполнить коды макросов на основе значения, выбранного из раскрывающегося списка? Это означает, что когда вы выбираете один элемент из раскрывающегося списка, конкретный макрос будет запущен сразу. Эта статья познакомит вас с полезным кодом для решения этой задачи.
Запустить макрос на основе значения, выбранного из раскрывающегося списка с кодом VBA
Прямого способа выполнить эту задачу нет, но следующий код VBA может вам помочь, сделайте следующее:
1. Во-первых, создайте выпадающий список по мере необходимости, см. Снимок экрана:
2. Затем щелкните правой кнопкой мыши вкладку листа, содержащую раскрывающийся список, который вы хотите использовать, а затем выберите Просмотреть код из контекстного меню, а в открывшемся Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код в пустой модуль:
Код VBA: запуск макроса на основе значения, выбранного из раскрывающегося списка:
Внимание: В приведенном выше коде E1 Если ячейка содержит раскрывающийся список, измените имена макросов и значения раскрывающегося списка на свои.
3. А затем сохраните и закройте это окно кода, теперь, когда вы выбираете элемент «Вставить пустые строки» из раскрывающегося списка, запускается макрос Macro1 и так далее .
Источник