|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.06.2011, 16:43 | #1 |
Пользователь
Регистрация: 22.07.2010
Сообщений: 11
|
VBA и зависимые выпадающие списки
Добрый вечер!
Столкнулся с проблемой - никак не могу заставить VBA генерировать зависимые выпадающие списки. Проблема проиллюстрирована в файле "пример". Если лист "данные", в нем три столбца - "модель", "тип двигателя" и "объем двигателя". В столбце "модель" независимый выпадающий список, с ним проблем не возникает. В столбце "тип двигателя" список зависимый; ссылается на динамический диапазон, зависящий от выбранной модели. В последнем столбце список также не статичный, но он ссылается на различные диапазоны в зависимости от типа двигателя. Я хочу сделать так, чтобы в любой строке листа "данные" при двойном клике на любую ячейку строки макрос программно проставлял выпадающие списки, аналогичные "образцевой" строчке. Для этого я макросом "getformulas" на лист "формулы" собираю следующую инфу - Type, Operator, Formula1, Formula2 всех выпадающих списков. Далее по плану на листе "данные" по событию двойного клика запускается макрос, котрый устанавливает в ячейках нужные выпадающие списки. А дальше начинаются проблемы. При первом дабл-клике появляется список в первом столбце (он статичен), на втором столбце макрос выкидывает ошибку. После того, как в ячейке 1го столбца есть значение, повторный запуск макроса по дабл-клику дает выпадающий список во втором столбце. На третьем - ошибка. И даже если в 1м и 2м столбце есть значения, то на третьем появляется ошибка и выпадающего списка нет. Теперь вопрос - как программно корректно проставлять динамические выпадающие списки даже при отсутствии значений в ячейках, на которые списки ссылаются? Заранее спасибо за любые советы и рекомендации! PS вариант с копированием ячеек из второй строки не подходит.. PPS перезалил пример - в предидущий раз не сохранились макросы. Последний раз редактировалось lkbb; 24.06.2011 в 07:47. |
23.06.2011, 23:11 | #2 |
Пользователь
Регистрация: 23.06.2011
Сообщений: 10
|
Приветствую!
1) Программно генерируете элемент ActiveSheet.OLEObjects.Add(ClassTyp e:="Forms.ComboBox.1", Link:=False, _ DisplayAsIcon:=False, Left:=306, Top:=30.75, Width:=49.5, Height:= _ 14.25).Select 2) И загружаете в этот список при помощи события AddItem нужные значения 3) После того как будет выбрано значение из списка, удаляете его предварительно перенеся выбранное значение в ячейку.... С уважением, Антон |
23.06.2011, 23:15 | #3 |
Пользователь
Регистрация: 23.06.2011
Сообщений: 10
|
Забыл дописать
4) В следующих ячейках прежде чем создавать список просто будите смотреть чтобы он удовлетворял условию из предыдущего списка |
24.06.2011, 07:44 | #4 |
Пользователь
Регистрация: 22.07.2010
Сообщений: 11
|
Watcher_1982, спасибо за совет!
Но хотелось бы избежать использования OLEObjects и решить проблему с помощью стандартных средств excel, а именно Validation ,поскольку в дальнейшем это упростит манипуляции с таблицей |
24.06.2011, 07:47 | #5 |
Пользователь
Регистрация: 23.06.2011
Сообщений: 10
|
Приветствую!
С помощью стандартных средств excel даже не знаю, походу нельзя иначе бы уже предложил кто-нить.... Я всегда работал с OLEObjects и никаких проблем не было |
24.06.2011, 11:37 | #6 |
Форумчанин
Регистрация: 25.04.2010
Сообщений: 616
|
А если такой вариант: двойной клик в А2:А1000 создает список в ячейке, а выбор в списках ст. А и В создает список в ст. В и С соответственно.
|
24.06.2011, 12:21 | #7 | |
Пользователь
Регистрация: 23.06.2011
Сообщений: 10
|
Цитата:
А он сильно усложнится если надо будет списки взаимозависимые например на 6 столбцов создавать + списки должны открываться в определенных диапазонах? |
|
24.06.2011, 13:02 | #8 |
Форумчанин
Регистрация: 25.04.2010
Сообщений: 616
|
|
24.06.2011, 14:34 | #9 |
Пользователь
Регистрация: 22.07.2010
Сообщений: 11
|
Действительно, интересный вариант, спасибо
Если создавать зависимый список в ячейе вручную, то excel ругается "при вычислении "источник" возникает ошибка. Продолжить?" и две кнопочки - "да" и "нет". Причем если выбрать "да", то список появится, хотя и будет пустым. Возможно, у Validation есть некое свойство, отслеживающее подобные ошибки и позволяющее их игнорировать? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Зависимые выпадающие списки | Anastasiya_77 | Microsoft Office Excel | 7 | 18.04.2011 07:52 |
Выпадающие списки. | Ras2im | Microsoft Office Excel | 13 | 08.03.2011 13:00 |
Выпадающие списки | Доктор | Microsoft Office Excel | 14 | 17.08.2010 19:41 |
Выпадающие списки | Marsik | JavaScript, Ajax | 1 | 14.12.2009 00:55 |
Зависимые выпадающие списки | Axxie | Microsoft Office Excel | 5 | 16.06.2009 16:47 |