Удалить полосу прокрутки в окне списка

#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 в ширине свойства. Пожалуйста, найдите изображение, показывающее оба свойства. Я надеюсь, что это поможет.

введите описание изображения здесь