在vba(基于Excel)中创建的系统中,会有人可以向我指出正确的方向。
我目前有一个带有多列列表框选择的用户窗体,该列表框是从数据库中填充的。但是当您选择列表框上的项目时,它仅显示第一个列。我怎么能做到这一点,所以它显示了第一和第二col。请看下面的图片
form_create_order.Controls("cmb_product_category").Enabled = True
Dim Connection As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim rcArray As Variant
Dim sSQL As String
With Connection
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = DatabaseLocation
.Properties("Jet OLEDB:Database Password") = ProtectPassword
.Open
End With
sSQL = "SELECT ID, Category_Name " & _
"FROM Category_Database ORDER BY Category_Name;"
rst.Open sSQL, Connection
rcArray = rst.GetRows
With form_create_order.cmb_product_category
.Clear
.ColumnCount = 2
.List = Application.Transpose(rcArray)
.ListIndex = -1
End With
rst.Close
Connection.Close
Set rst = Nothing
Set Connection = Nothing
答案 0 :(得分:1)
我建议遵循MSDN文档:How to: Change the Column Widths of a Multi-Column List Box
ListBox1.ColumnWidths="0;500" 'replace `;` with `,` if your system uses commas as a separator
根据PEH条评论,您可以使用:
ListBox1.ColumnWidths = Replace$("0;500", ";", Application.International(xlListSeparator))
如果您正在寻求更灵活的解决方案,而不受区域设置的限制。
答案 1 :(得分:1)
为了提供替代选择(找到here):
Private Sub ComboBox1_Click()
With ComboBox1
.Text = .List(.ListIndex, 0) & " | " & .List(.ListIndex, 1)
End With
End Sub
在这种情况下,不需要列宽(但是,这是一种更优雅的方法)。