Hishnik пишет:. . .
А вот со списком типа ListBox что то не совсем. Вроде создал список. Да выделяются через Ctrl строчки, но мне надо что бы после выбора лишнее (не выбранное) скрывалось и не печаталось. Ну и потом при необходимости можно было изменить выбор и опять же другие не выделенные элементы скрывались.
. . .
Это только на первый взгляд кажется, что тут пара пустяков. На самом деле вот какие сложности:
- Элемент управления ListBox не содержит внутреннего атрибута (типа "Tag"), в котором можно было бы хранить все значения, которые могли бы выбираться. Поэтому придется пользоваться внешними, напр., в Word есть такой аппарат, как пользовательские свойства (Properties). Можно придумать структуру строки с разделителями, отражающую значения всех переменных и признак их последнего выбора. Напр., пусть это свойство имеет наименование "LB1". Пример значения этого свойства:
|/Элем1/0/|/Элем2/1/|/Элем3/0/|/Элем4/1/|/Элем5/1/|
Здесь элементы списка представлены с разделителем - вертикальной чертой, а каждый элемент имеет два значения: значение элемента списка и значение того, выбран ли он. Программно можно легко добраться до любого параметра внутри такой строки.
- Для элемента ListBox нужно запрограммировать события GotGocus и LostFocus (поддерживаемые для объектов типа ListBox).
Первое из них должно срабатывать, когда пользователь кликнет в элементе ListBox. Тогда перехватчик этого события (GotFocus) должен извлечь из строки свойства LB1 (см.выше) все значения элементов списка и пересоздать список, выделив в нем элементы, выбранные в последний раз.
Второе событие (LostFocus) должно срабатывать после того, как пользователь кликнет в документе в любом месте вне списка. Тогда перехватчик LostFocus должен понять, что пользователь выбрал в последний раз, заново сформировать свойство LB1 и, наконец, переформировать список ListBox, оставив в нем только выбранные пользователем значения. При этом макрос из LostFocus должен еще и сохранить весь документ.
Возможно, получится обойтись только перехватчиком LostFocus.
Рассказывать все это - долго, реализовать и проверять - еще дольше. Так что попробуйте придумать что-нибудь попроще )).
Дискуссию на эту тему закрываю.