Выпадающие списки с условными данными

У меня есть три диапазона ячеек (с другого листа в моей книге), в которых хранятся значения, которые я хочу отобразить в раскрывающемся списке (Form Control). Мне нужен макрокод для сброса диапазона ячеек или именованного диапазона для определения параметров в раскрывающемся списке на основе другого значения ячейки. , Я пробовал следующий код без успеха:

Sub DropDown11_Change ()

Если Range ("A1") = 1 Then
(диапазон ввода от листа1 a1: a50)

Дальность ElseIf («A1») = 2 Затем
(диапазон ввода от листа2 a1: a50)

ElseIf Range ("A1") = 3 Затем
(диапазон ввода от листа 3 a1: a50)

Конец Если
End Sub

Какие-либо предложения?

благодаря

Это должно помочь вам, поместите любой из них в стандартный модуль (например, Module1).

Sub DropDown1_Change() Dim ddFillRange As String If Sheet1.Range("A1") = 1 Then ddFillRange = "Sheet1!A1:A50" ElseIf Sheet1.Range("A1") = 2 Then ddFillRange = "Sheet2!A1:A50" ElseIf Sheet1.Range("A1") = 3 Then ddFillRange = "Sheet3!A1:A50" End If Sheet1.Shapes("Drop Down 1").ControlFormat.ListFillRange = ddFillRange End Sub 

Если вы хотите использовать именованные диапазоны, вы можете использовать:

 Sub DropDown1_Change() Dim ddFillRange As String If Sheet1.Range("A1") = 1 Then ddFillRange = Range("NamedRange1").Name ElseIf Sheet1.Range("A1") = 2 Then ddFillRange = Range("NamedRange2").Name ElseIf Sheet1.Range("A1") = 3 Then ddFillRange = Range("NamedRange3").Name End If Sheet1.Shapes("Drop Down 1").ControlFormat.ListFillRange = ddFillRange End Sub 

Затем, чтобы сменить этот огонь на ячейку A1, вам нужно будет поместить следующее в модуль Sheet1 (когда вы щелкните правой кнопкой мыши на Листе 1 в окне редактора VBA, выберите код просмотра … см. Рисунок ниже):

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Range("A1")) Is Nothing Then DropDown1_Change End Sub 

Код Sheet1

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

 Sub DropDown11_Change() Dim dropdown As String If Range("A1") = 1 Then '(input range from sheet1 a1:a50) dropdown = "=Sheet1!R1C1:R50C1" ElseIf Range("A1") = 2 Then '(input range from sheet2 a1:a50) dropdown = "=Sheet2!R1C1:R50C1" ElseIf Range("A1") = 3 Then '(input range from sheet3 a1:a50) dropdown = "=Sheet3!R1C1:R50C1" End If ActiveWorkbook.Names.Add Name:="DynamicList", RefersToR1C1:=dropdown End Sub 
  • Собирайте пользовательский ввод для настройки имен листов в коде VBA
  • Ошибка времени ввода входного окна VBA Excel 13 несоответствие типов
  • Interesting Posts

    Excel – подсчет первых смежных ненулевых и не-нулевых значений в строке

    Как получить окно или обработчик процесса определенного процесса Excel?

    Использование файла подключения Excel для выполнения запросов

    Настройте использование Oracle DB по сети для экспорта файла .CSV

    Импортировать excel с повторяющимися столбцами, которые заканчиваются числом (r xlsx)

    Вставьте фотографию в закладку Word из диапазона Excel, VBA

    Как обновить приложение Excel Workbook 2007 от .xls до .xlsx?

    доступ к подпрограммам один раз, затем Ошибка '91': переменная объекта не задана

    Избегайте использования активного виртуального рабочего стола Excel при загрузке файла excel

    Чтение данных без открытия файла excel

    Сравнение строк с массивом Item и String с VBA в Excel

    Формирование отдельных столбцов с использованием Epplus не сохраняется

    excel не распознает введенные даты

    Планировщик Windows не выполняет пакетный файл или VBS

    Перенос данных веб-страницы на рабочий лист Excel с использованием VBA

    Давайте будем гением компьютера.