Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.03.2007, 14:24   #1
Python
Пользователь
 
Регистрация: 25.11.2006
Сообщений: 46
Стрелка Ширина выпадающего списка

Добрый день! Проблема следущая: как сделать, чтобы выпадающий список был по ширине, как самая длинная запись в нем, а не по ширине ячейки, с которой он выпадает?
Тобишь есть список, к примеру, с такими данными: Шевченковский р-н, Поликлиника №1; Шевченковский р-н, Поликлиника №2; Шевченковский р-н, Поликлиника Центральная;. В выпадающем списке видно только: "Шевченковский р-н..."
Python вне форума
Старый 10.03.2007, 16:21   #2
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Если Вы имеете ввиду выпадающий список об'екта Validation (Данные-Проверка-Список), то этот список ориентируется на ширину ячейки и с этим фактом, видимо, придётся смириться. Однако, если автоподбор ширины выпадающего списка для Вас имеет принципиальное значение, то можно создать собственную панель инструментов, в т.ч. и контекстное меню, разместить на нём стандартный контрол msoControlDropdown/msoControlComboBox заполнить его и обязательно установить значение свойства DropDownWidth = -1. Последнее позволит получить список, ширина которого будет ориентироваться на самый длинный элемент списка, однако, максимальное количество символов в строке не должно превышать 255. В общем думайте, и если подобное решение Вас устроит, то я могу набросать готовый пример.
pashulka вне форума
Старый 10.03.2007, 16:37   #3
Python
Пользователь
 
Регистрация: 25.11.2006
Сообщений: 46
По умолчанию

К сожалению, не могу понять всего что Вы предлагаете. Я действительно пользуюсь стандартным способом (Данные-Проверка-Список). В предлагаемом Вами варианте, есть ли возможность ссылаться на определенный список?
Python вне форума
Старый 10.03.2007, 17:14   #4
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Собственно говоря, я всего лишь предложил программно, например, при открытии нужной рабочей книги, создать панель инструментов и расположить на ней стандартный список, такой как например, Шрифты. А при выделении нужной ячейки/диапазона ячеек отображать эту панель инструментов с целью выбора нужного элемента. Ссылаться этот список на ячейки рабочего листа не может, но мы можем заполнить его данными нужных ячеек или данными массива, например, при его создании или перед отображением.
pashulka вне форума
Старый 10.03.2007, 17:26   #5
Python
Пользователь
 
Регистрация: 25.11.2006
Сообщений: 46
По умолчанию

Впринципе такой вариант подходит. Только было бы неплохо, чтобы была возможность в дальнейшем этот список редактировать, а не только перед его созданием.
Python вне форума
Старый 10.03.2007, 20:28   #6
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Вот пример того, о чём я говорил ранее, кстати, там даже наличествует пример программного изменения ширины списка объекта Validation (только пользоваться этим способом особо не рекомендуется)
Вложения
Тип файла: zip Python (DropDown).zip (23.3 Кб, 161 просмотров)
pashulka вне форума
Старый 10.03.2007, 21:10   #7
Python
Пользователь
 
Регистрация: 25.11.2006
Сообщений: 46
По умолчанию

Спасибо, Павел. Буду разбираться... Единственное, подскажите, пожалуйста, как изменить эту строку (я просто совсем не силен в VBA):

For Each iCell In Range([A2], [A65536].End(xlUp))

Так чтобы ссылка была на диапазаон A3:A150, в другом рабочем листе, под назвнием ЛПУ?
Python вне форума
Старый 11.03.2007, 02:55   #8
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Можно использовать имя рабочего листа :

Код:
Worksheets("ЛПУ").[A3:A150]
 
Worksheets("ЛПУ").Range("A3:A150")
 
Application.Range("ЛПУ!A3:A150")
A если существует вероятность его изменения, то можно предварительно проверить наличие рабочего листа с указанным именем или использовать кодовое, иначе называемое программное имя рабочего листа, которое также можно изменить, но сделать это немного сложнее, особенно, если "защитить" VBProject.
Кроме этого, можно использовать именованный диапазон или именованную формулу, которая будет возвращать ссылку на диапазон. В общем, вариантов масса, выбирайте, только обратите внимание на то, что в Вашем варианте диапазон указан как константа, т.е. увеличение списка не предполагается.

Код:
Лист2.[A3:A150]
 
Лист2.Range("A3:A150")
Скриншот с кодовым именем прилагается :


Последний раз редактировалось pashulka; 11.03.2007 в 02:57.
pashulka вне форума
Старый 11.03.2007, 06:31   #9
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Кстати, а вот и обновлённый пример, где вместо удаления элементов списка наличествует очистка, а источник данных располагается в другом рабочем листе.
Вложения
Тип файла: zip _Python (DropDown).zip (21.9 Кб, 168 просмотров)
pashulka вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBGrid ширина колонки Pinya БД в Delphi 7 07.08.2008 09:22
Динамическая ширина столбцов Nemon Общие вопросы Delphi 7 12.09.2007 13:15
Прокрутка выпадающего списка SAndrus Microsoft Office Excel 2 16.06.2007 17:52
Ширина столбцов в DBGrid Elena БД в Delphi 1 27.04.2007 15:34