Страницы: 1
RSS
Автоматический подбор ширины ComboBox (выпадающий список) под ширину ячейки/ячеек в Excel
 
И снова добрый день, уважаемые форумчане.
В очередной раз прошу Вашей помощи в написании кода для автоматического подбора ширины ComboBox (выпадающий список) согласно ширине ячейки без искажения (растягивания или сужения при применении "Привязка объекта к фону") информации в строке ввода.
Это необходимо так как в листе есть выбор видимых ячеек (от 1 до 6), когда настраиваешь Список на двух ячейках он одного размера, но при активации 4 или 6, список начинает растягиваться и соответственно растягивать информацию в нем.

Спасибо!
 
И снова о том-же. О файле-примере. Как есть - Как надо
Согласие есть продукт при полном непротивлении сторон
 
Прошу извинить, вот:
 
С пример понятнее не стало. На Вашем листе,как минимум, 3 КомбоБока. Что и при каких условиях должно происходить/не происходить? Просто, по-русски напишите
Согласие есть продукт при полном непротивлении сторон
 
В строчке D16 выпадающий список с возможность выбора сколько насосов в насосной станции. В строчке D18 ComboBox с списком насосов, так вот если ComboBox  растянуть на две ячейки и закрепить его, при выборе 5-6 насосы поля растягиваются а ComboBox нет, т.е. остается с тем же размером. Задача в том чтоб он растягивался в диапазоне этих 6 ячеек D16:I16, независимо от того какой ширины они. Это можно реализовать с помощью "Форма Объекта-Свойства-Перемещать и Изменять размер вместе с ячейками" но в таком случае ComboBox будет сужаться как будто сужаешь рисунок, и растягиваться так же.
Задача в том чтоб значение ширины ComboBox было равно значению ширины всех 6 ячеек (D16:I16), таким образом ComboBox не будет деформировать в нем текст.
Изменено: crysi - 11.03.2018 22:10:10
 
crysi, ну так и меняйте размер объекта при изменении ширины столбцов, взяв за ширину сумму ширины столбцов.

что-то типа
Код
For Each cell In Range("d18:i18")
w = w + cell.Width
Next
ComboBox1.Width = w
Изменено: БМВ - 11.03.2018 22:26:34
По вопросам из тем форума, личку не читаю.
 
Спасибо большое за ответ, не могли бы Вы глянуть этот код пожалуйста:
Код
Private Sub ComboBox1_Change()
     For Each cell In Range("d18:i18")
     w = w + cell.Width
     Next
     ComboBox1.Width = w
End Sub

Правильно ли он написан, чтоб действие срабатывало? Если нет, укажите пожалуйста что нужно изменить.
Спасибо.
Изменено: crysi - 12.03.2018 14:27:34
 
просто поместите косочек  кода следом за изменением ширины столбцов после     End Select.  
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
For Each cell In Range("d18:i18")w = w + cell.WidthNextComboBox1.Width = w
Отлично работает, то что надо, большое спасибо! Вопрос закрыт! :)
Страницы: 1
Наверх