Страницы: 1
RSS
Источник данных для выпадающего списка ActiveX из Умной таблицы
 
 Здравствуйте, Люди умные. И добрые Люди тоже здравствуйте.

Есть книга с десятком листов, пятком макросов, несколькими списками в один столбец, для удобства наполнения преобразованными в Умные таблицы, и с несколькими другими Умными таблицами в которых используются выпадающие списки созданные с помощью Данные - Проверка данных. Есть, скажем так, итоговая Умная таблица, в которой все данные в итоге консолидируется, получается некая база данных и по которой в итоге строится Сводная таблица. С этим всё легко и просто, всё работает, всё подробно описано здесь (Умные таблицы), здесь (Выпадающие списки), здесь (Создание базы данных в Excel) и здесь (Создание отчетов при помощи сводных таблиц).
На одном из этапов внесения данных используются формы ввода с выпадающими списками созданными так же с помощью проверки данных, но хотелось бы некоторые выпадающие списки сделать на основе элемента ActiveX, чтобы получить возможность быстрого поиска элементов по первым буквам. Вот тут как раз и появилась загвоздка. Если в свойствах элемента ActiveX в параметре ListFillRange прописать диапазон в виде "Лист!A1:A100", то всё работает, но имеем известные неудобства в виде необходимости изменять диапазон в случае пополнения списка выбора. С запасом делать тоже не вариант, потому как в выпадающем списке будут отображаться и пустые элементы. Если в параметре ListFillRange прописать именной диапазон созданный с использованием функций СМЕЩ(OFFSET) и СЧЁТЗ (COUNTA), то тоже всё работает. Если же в  ListFillRange прописать диапазон данных пользуясь свойствами Умной таблицы в виде "'Лист'!ИмяТаблицы[ИмяСтолбца]" или же указать имя именного диапазона созданного с помощью свойств умной таблицы, то после нажатия Enter поле ListFillRange очищается  и выпадающий список остается пустым. Колдовство с кодом тоже не дало мне положительных результатов. Возможно, где-то ставлю не тот значок или не ту буковку. Знаний, увы, не хватает. Использование в ListFillRange свойств Умной таблицы, а не диапазона созданного с помощью функций СМЕЩ(OFFSET) и СЧЁТЗ (COUNTA), если это всё же возможно как описано здесь, позволяет избежать лишних операций по созданию дополнительных именных диапазонов. Помогите, пожалуйста, разобраться. Файл для экспериментов прилагается.

С Уважением, Виктор.
 
А так не подойдёт? Используется событие активации листа.
 
Юрий М, я не силен в VBA. Ваш ответ породил во мне еще больше вопросов. Чтоб сказать подойдет или нет, придется разобраться в еще большем чем я планировал, а хотелось бы для начала понять как использовать свойства Умной таблицы, если это в принципе возможно.

По вашему варианту могу только сказать, что если первоначально книга открывается на листе с элементом ActiveX, то список открывается пустой. Чтоб он заработал, надо переключиться на другой лист и обратно, то есть должно произойти событие активации.
 
Всё верно - для наполнения КомбоБокса нужно активировать второй лист. Но я же показал только принцип, а дальше есть два варианта:
1. Закрывать книгу при активном первом листе - тогда она и откроется на этом листе.
2. При открытии книги активировать (программно) первый.
 
Юрий М, нас как минимум трое. Вы, я и конечный пользователь "таблички". И если между Вами и мной пропасть, то конечный пользователь живет вообще в другой галактике. )) Я уже слышу его крики проносящиеся со скоростью света через вселенную о том, что у него не работают выпадающие списки. Поэтому вариант 1 сразу исключаем. Второй вариант, на мой взгляд, похож на костыль. Именно лист с этими списками и является основным рабочим, и книга закрывается, а значит и сохраняется и потом открывается именно на этом листе, и ЭктивШит(1)-ЭктивШит(2)-ЭктивШит(1) это какие-то лишние телодвижения, опять же, на мой дилетантский взгляд. Надо изучать. В любом случае спасибо Вам за отклик.
А в русле темы и использования того, что я хоть немного знаю, а именно свойств Умных таблиц, можете что-то подсказать?
Вот ЭТО не дает мне покоя. Говорят же это работает.
Изменено: V.Mozzhukhin - 17.08.2018 21:54:46
 
Про умные таблицы сказать ничего не могу.
По первому варианту: подразумевалось, что активация первого листа тоже будет осуществляться программно - на событие закрытия книги.
По второму: Вам же важно именно заполнение? Может я чего не понял, но КомбоБокс у Вас на втором листе. Т.е. Вы волей неволей, чтобы к нему добраться, будете активировать этот второй лист с КомбоБоксом.
См. файл - добавил принудительную активацию листа TovarSht в книге.
У меня вопрос: а что здесь "костыльного"?
 
Скрытый текст


Обновленный файлик посмотрел. Намотал инфу на ус. Спасибо, мой багаж знаний пополнился.
Подождем знатоков Умных таблиц.
Изменено: V.Mozzhukhin - 17.08.2018 22:19:27
 
Хочу добавить, что основной целью написания темы был скорее не поиск срочного решения проблемы, а желание разобраться в вопросе.
Страницы: 1
Наверх