Как раз долго, потому как редко и эпизодически - когда возникает текущая задачка, а до следующей - все забываю. Кста... ты забыл свой кошелек написать - а ведь первым откликнулся
Еще один вопрос не смог решить - попробовал сделать возможность выбора по нескольким значениям в комбо... не вышло.
Еще один вопрос не смог решить - попробовал сделать возможность выбора по нескольким значениям в комбо... не вышло.
Можно либо заменить комбобокс на листбокс, как сказал mc-black, либо добавить листбокс, в который будут добавляться позиции, выбранные пользователем. Можно предусмотреть кнопки или меню(если таковое на vba водится) управления листбоксом(добавить, удалить). В этом случае можно убрать функцию "ComboBox1_Change()" Перенеся весь функционал на кнопку или пункт меню добавить...
mc-black пишет:
Set rng = wsh.Range(wsh.Cells(1, 1), wsh.Cells(m, n))
- это помогло, но вот что вылезло... Когда я запускаю форму из той надстройки, в комбо1 вставляется инфа из давным давно обрабатываемого этой надстройкой файла, видимо где-то в памяти сидит. Прошерстив код и не найдя виновника, понял, что 1. или много переписывать (поскольку большинство переменных только объявляю... ), 2. или как-то надо все оптом из памяти выбрасывать, не обращаясь к конкретной переменной, 3. или, чтобы ComboBox1 принудительно заполнялся из активной книги (это даст дополнительное преимущество - форма фильтрует данные в новый файл, а потом, среди полученного результата без лишних телодвижений можно отфильтровать по другому критерию)
Чтобы комбобокс1 заполнялся из активной книги надо написать примерно следующее
PrivateSub UserForm_Activate()
Set Addr = ActiveWorkbook.Sheets(1).Range("A1" & ":" & Sheets(1).Cells(1, 1).End(xlToRight).Address(0, 0))
ForEach Cell In Addr
CB1.AddItem Cell.Value
Next
EndSub
Единственный вопрос, который у меня возникает, не будет ли активирование формы активировать книгу, к которой она припривязана? В этом случае она одна будет активной всегда. Как вариант, для формы можно использовать WSO. Подробнее можно узнать здесь http://cs.usu.edu.ru/home/abv/
Когда я запускаю форму из той надстройки, в комбо1 вставляется инфа из давным давно обрабатываемого этой надстройкой файла, видимо где-то в памяти сидит.
В какой памяти? Не может этого быть, IMHO. Не знаю, как угадать в чем дело. Надо видеть, с чем ты работаешь. А насчет:
1. или много переписывать (поскольку большинство переменных только объявляю...
Надо наглядно оформлять код, не жалеть времени подробно прокомментировать назначения всех процедур/функций/обработчиков, смысл их параметров, назначение локальных переменных, основные смысловые блоки программы (например что перебирает тот или иной цикл или для чего служит набор условий if|else if|else|end if и т.д.). Также разумно и в одном стиле расставляются отступы и пустые строки, чтобы программа читалась одним взглядом даже без комментариев. В общем, сложное надо упрощать и тогда не запутаешься в своей программе, когда в ней станет достаточно много строк кода. Методически в плане оформления кода мне очень помогли книжки Дейтелов о программировании на языках C и C++.
Единственный вопрос, который у меня возникает, не будет ли активирование формы активировать книгу, к которой она припривязана? В этом случае она одна будет активной всегда. Как вариант, для формы можно использовать WSO. Подробнее можно узнать здесь http://cs.usu.edu.ru/home/abv/
Так зачем же размещать этот код прямо сразу в Обработчике. Я не знаю, что там у quest за настройка и как оттуда вызывается форма, поэтому совета дать не могу. Сначала выяснить, что у нас активно, сохранить объект, а потом уже строить. Насчет сторонних библиотек - я против, когда все можно сделать штатными средствами без избыточных конструкций. Сама по себе WSO - любопытная весчь. А вот насчет необъявления типов переменных и лапшевидного кода - мне так не нравится, AxeL.
Для создания множественного выбора через форму, а также для создания более сложных конструкций отбора из одного списка в другой я рекомендую quest изучить функционал Расширенного фильтра Excel 2003 с тем, чтобы использовать его возможности через форму и макрос.