Excel - Створення випадаючого списку на певних осередках

Проблема

Я хотів створити випадаючий список з даних у Sheet2. Я спробував наступні коди, але результат здається неправильним. Замість даних у Sheet2, перерахованих у випадаючому списку, випадаючий список містив дані з Sheet1 (який є моїм аркушам призначення).

Крім того, я хотів би мати випадаючий список на певних осередках, де я маю інформацію про клітинки раніше, тобто випадаючий список повинен бути в стовпці F Sheet1, де є інформація про стовпці E of Sheet1 і повторювати до кінця список.

При цьому додається файл, над яким я працюю.

Рішення

Створити список перевірки з ІНШИХ ВИКОРИСТАНОЇ ЛІТЕРИ дає назву діапазону для цього списку перевірки (на аркуші2)

і використовувати його як формулу

Я намагався змінити ваш макрос, не заважаючи, окрім зміни однієї або двох рядків

Я дав назву діапазону як "rangename". Ви можете змінити його в макросі

При необхідності налаштуйте його трохи більше.

 Sub Dropdown () Dim x As Long, y Як довгий Dim objCell As Діапазон Dim objDataRangeStart As Range Dim objDataRangeEnd As Range Діапазон розмірів як рядок ("Sheet1") Встановити objDataRangeStart = wsSourceList.Cells (1, 2) 'Початковий діапазон для випадаючих списків списку Встановити objDataRangeEnd = wsSourceList.Cells (6, 2)' Діапазон кінця для випадаючого списку MsgBox objDataRangeStart MsgBox objDataRangeEnd '==== ============= З робочими аркушами ("Sheet2") Діапазон (objDataRangeStart, objdatarangaeend) .Name = "rangename" End With "=============== ====== '>> Встановити перевірку на обов'язковій комірці Встановити objCell = wsDestList.Cells (8, 4)' Розташування випадаючого списку 'MsgBox objCell x = 4 y = 6 Встановити objCell = wsDestList.Cells (x, y) 'Розташування випадаючого списку з objCell.Validation .Delete' .Додати тип: = xlValidateList, AlertStyle: = xlValidAlertStop, Оператор: = xlBetween, Formula1: = "=" & objDataRangeStart.Address & ":" & objDataRangeEnd. Адреса '= ========================================== Тип додавання: = xlValidateList, AlertStyle : = xlValidAlertStop, Оператор: = _ xlBetween, Formula1: = "= rangename" '================================ ================================ .IgnoreBlank = True .InCellDropdown = True .ErrorTitle = "Попередження" .ErrorMessage = " Виберіть значення зі списку, доступного для вибраної комірки. " .ShowError = True End З x = x + 1 'y = y + 1 Loop До тих пір, поки x = 51 End Sub 

Завдяки venkat1926 для цього чайові.

Попередня Стаття Наступна Стаття

Кращі Поради