2015-08-24 27 views
1

我編程方式從數據庫中使用此代碼元素添加到多列列表框:自動適應列表框中列的寬度

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中插入工作正常,但列的寬度並不總是適應插入其中的元素的長度,我想知道如何做到這一點,以便每列的列寬適應插入到其中的文本。

編輯:我使用@Excel Developers提出的解決方案,並使用@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

我還沒有發現無論如何,自動設置視ONT他在每個數據寬度列,我很確定這種方法不存在。

+0

如果將其設置爲諸如Courier New之類的字體,並且每個字符的寬度相同,則可以根據該字符計算字符數並設置列表框的寬度。只需要根據像素計算出1個字符的大小(很確定它已經完成了)。 –