Страницы: 1
RSS
VBA динамический выпадающий список
 
Добрый день.
Прошу помощи знатоков.
Необходимо задать выпадающий список который формируется через ДВССЫЛ. Задаю его так:
Код
    Range(Cells(stroka_vstavka + 1, stolb_vstavka + 13), _
                Cells(stroka_vstavka + kol_strok, stolb_vstavka + 13)). _
                Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=INDIRECT(RC[-1]&""_Группа"")"
Ругается при выполнении, как я понял на RC[-1], то есть на такую адресацию в "=INDIRECT(RC[-1]&""_Группа"")".  Здесь RC[-1] - это изменяемые текстовые данные, которые в конечном итоге формируют имя диапазона с данными, на который формируется ссылка. То есть выпадающий список будет изменятся от значения в  ячейке RC[-1].
КАК VBA объяснить чего я от него хочу?
 
Formula1 и FormulaR1C1 это далеко не одно и то же.
Замените FormulaR1C1  на Formula.
 
Варианты:
FormulaR1C1
Formula1R1C1
Formula
Результат один - "Named argument not found"
Изменено: Bugrimdjon - 13.07.2018 13:06:16
 
Цитата
Bugrimdjon написал: КАК VBA объяснить чего я от него хочу?
Для начала объяснить форуму. А для этого нужно показывать файл-пример.
 
Выделяю ячейки > проверка данных>  в проверку данных вношу значение список, в нем указываю значение =ДВССЫЛ(RC[-1]&"_Группа").
Такой же эффект необходимо получить через VBA.
Записываю макрос такой последовательности, потом его повторяю и ОШИБКА.
Прикрепляю пободный файл. Макрос 26 и 27 -  записанные макросы. Эксель их записал, а повторять отказывается.
Изменено: Bugrimdjon - 13.07.2018 13:58:06
 
Вариант: создать на листе именованный динамический диапазон и уже его скормить выпадающему списку.
 
Именованный диапазон создан и не один. Название диапазона формируется от значения в RC[-1].  
 
Именованные диапазоны вижу, но они у Вас не динамические.
Вот и запишите рекордером присвоение нужного именованного диапазона выпадающему списку.
 
Этот файл сформирован для примера, оригинал тяжел для восприятия. Прикрепляю его, может получится разобраться.

Выбираем лист "Новый расчет"
Выделяем столбец "Модули, комплекты" без заголовка.
Жмем CTRL+L.
В появившемся окне устанавливаем первые значения в combobox "Станок", "Узел", "Был", "Стал".
Ждем сформировать комплект.
ЖДЕМ ОШИБКУ.
 
Файлы удалены - читаем в Правилах о максимально допустимом размере. И другие пункты Правил тоже читаем.
 
Всем спасибо. РАЗОБРАЛСЯ.
Действительно, устранил возникновение ситуации с неописанными ссылками и ошибка пропала.
 
Добрый день.
Опять по поводу выпадающего списка. Проблема следующая.
При выполнении программы затыкается на Add Type...=INDIRECT(""Производитель[Производитель]"")".
Выпадает ошибка: Run-time error "1004": Application-defined or object-defined error.
После, если продолжить выполнение программы, выполняется без проблем. Как будто этой ошибки не было.
Может кто знает, что это такое и как с ним бороться.

Код
     With Sheets(list_vstsvki).Range(Cells(stroka_vstavka + 1, stolb_vstavka + 12), _
         Cells(stroka_vstavka + kol_strok, stolb_vstavka + 12)).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=INDIRECT(""Производитель[Производитель]"")"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
Изменено: Bugrimdjon - 16.07.2018 13:46:39
Страницы: 1
Наверх