2015-08-24 2 views
1

программно добавить элементы из базы данных в многоколоночным ListBox с помощью этого кода:Автоматически адаптировать ширину столбца ListBox

Do While (Not rs.EOF) 

     ExistingSheetsListBox.AddItem 
     ExistingSheetsListBox.List(i, 0) = rs.Fields(0) 
     ExistingSheetsListBox.List(i, 1) = rs.Fields(1) 
     ExistingSheetsListBox.List(i, 2) = rs.Fields(2) 
     ExistingSheetsListBox.List(i, 3) = rs.Fields(3) 
     ExistingSheetsListBox.List(i, 4) = rs.Fields(4) 

     i = i + 1 

     rs.MoveNext 
Loop 

включение в ListBox прекрасно работает, но ширина колонки не всегда адаптированы к длина вставленных в него элементов, я хотел бы знать, как я могу сделать так, чтобы ширина столбца каждого столбца была адаптирована к тексту, вставленному в него.

EDIT: Я использовал решение, предлагаемое разработчиками @Excel с фрагментом кода, данным @HarveyFrench.

+0

Вы можете сделать это в .Net, но я не думаю, что вы можете в VBA. Вам нужно будет выработать ширину, требуемую самой длинной записью, а затем установить ее на это значение во время выполнения. –

+0

Существует довольно сложный способ обхода [здесь] (http://www.jkp-ads.com/Articles/AutoSizeListBox01.asp), который включает использование скрытой метки, которая устанавливается в самый длинный элемент в каждом столбце, а затем свойство width считывается с этой метки и используется для определения размера столбца списка. – Soulfire

ответ

1

Свойство ColumnWidths можно использовать для установки размера столбцов.

например, `ExistingSheetsListBox.ColumnWidths = "60; 60; 160; 160; 60"

Для получения дополнительной информации см here

Я не нашел в любом случае, чтобы автоматически установить ширину в зависимости ОНТ он данных в каждом , и я уверен, что такого метода не существует.

+0

Если вы установите шрифт, такой как Courier New, который имеет одинаковую ширину для каждого символа, вы можете подсчитать количество символов и установить ширину списка в соответствии с этим. Просто нужно выяснить, насколько большой 1 charater в пикселях (довольно уверен, что это уже сделано). –

Смежные вопросы