#excel #vba #userform
#excel #vba #пользовательская форма
Вопрос:
Я использую пользовательскую форму в vba, и у меня есть окно списка. Я хочу удалить horoz. полоса прокрутки снизу. Есть ли способ сделать это? Я не вижу никакой опции в окне свойств.
Ответ №1:
Это может произойти, если для свойства «Формат ширины столбца» в поле «Список» установлено значение «что-то широкое», затем вы изменяете размер элемента управления в соответствии с данными, он будет отображать полосы прокрутки.
Чтобы исправить это, измените свойство «Ширина столбца» на вкладке Формат на что-то действительно маленькое, затем поиграйте с этим свойством и размером элемента управления listbox, пока не получите его таким, как вы хотите, и полосы прокрутки не будут отображаться.
Ответ №2:
Вам нужно установить свойство ListWidth для listbox или combobox больше, чем свойство columnWidth.
Первый — это размер того, что вы показываете на экране, а второй — это размер того, что вы хотите поместить внутрь первого.
Ответ №3:
Как упоминалось в других ответах, это комбинация columnWidth и Width . Основными игроками являются
columnCount: Списки позволяют перемещать данные по нескольким столбцам, но это совсем другая история. Для простого случая установите количество столбцов равным 1
Ширина: устанавливается путем растягивания чертежа
Ширина столбца: Это установит ширину столбцов. В простом случае выясните, какая ширина была установлена, и вычтите ширину полосы прокрутки из этого значения. По умолчанию для ширины столбца установлено значение Width. Поскольку в также включает размер вертикальной полосы прокрутки. Горизонтальная полоса прокрутки появляется, если
((sum of columnwidths) vertical scrollbar width) > (width / column count)
В простом случае имеется только одна ширина столбца и только один столбец, поэтому горизонтальная полоса прокрутки появится, если
(columnwidths vertical scrollbar width) > width
Чтобы узнать ширину полосы прокрутки, перетащите полосу прокрутки на холст. Прокрутите до нижней части свойств и найдите ширину. В моем случае это 12,75 — сделайте это 12, чтобы упростить арифметику.
Сработавший пример:
Column Count = 1
Width = 48pt
Column Widths = 48 - 12 = 36pt
Ответ №4:
Попробуйте сделать поле списка немного шире …. не намного шире, но ровно настолько, чтобы избавиться от горизонтальной полосы прокрутки.
Возможно, это сработает.
Комментарии:
1. Я пробовал это. Это сработало, но мне пришлось сделать поле действительно широким. Я хочу, чтобы она была достаточно большой для просмотра списка.
2. @Mike: Эти значения поступают из базы данных или столбца набора данных? Если длина столбца больше, чем у listbox, это может добавить полосу прокрутки.
3. Значения поступают из одного из столбцов моего листа, который равен ширине текста внутри.
Ответ №5:
Нажмите на пользовательскую форму. В разделе Статистика свойств найдите KeepScrollBarsVisible.
Измените его на 0 — fmScrollBarsNone
Я работал с этим в течение двух часов — пытался найти ответ в окне списка. Ее там НЕТ!
Джим
Ответ №6:
Я объявил columnwidth в начале формы, и это работает как по волшебству!
Ответ №7:
Метод, который на самом деле сработал для меня, заключался в том, чтобы установить для свойства ColumnWidths в section Data меньшее значение, чем для свойства Width в Position section. На изображении ниже я установил размер 30pt для ColumnWidths, который меньше, чем число 40 в ширине свойства. Пожалуйста, найдите изображение, показывающее оба свойства. Я надеюсь, что это поможет.