我有下表:
Public table As New DataTable
table.Columns.Add("#", GetType(Integer))
table.Columns.Add("Name", GetType(String))
table.Columns.Add("Exp", GetType(Integer))
table.Columns.Add("HP", GetType(Integer))
table.Columns.Add("At", GetType(Integer))
table.Columns.Add("De", GetType(Integer))
table.Columns.Add("SA", GetType(Integer))
table.Columns.Add("SD", GetType(Integer))
table.Columns.Add("Sp", GetType(Integer))
table.Columns.Add("Tot", GetType(Integer))
table.Rows.Add(1, "One", 64, 0, 0, 0, 1, 0, 0, 1)
table.Rows.Add(2, "Two", 142, 0, 0, 0, 1, 1, 0, 2)
table.Rows.Add(3, "Three", 236, 0, 0, 0, 2, 1, 0, 3)
..........
该表有数百个条目。
我想在Name
字段的所有条目中填充一个组合框,按字母顺序排列或按#
排序(由用户定义)。
有没有办法轻松做到这一点,例如
的内容combobox.Items.AddRange(table.Colums(2))
答案 0 :(得分:1)
您可以使用LINQ获取所需的条目:
Dim values = table.AsEnumerable().
OrderBy(Function(row) row.Field(Of Integer)("#")).
Select(Function(row) row.Field(Of String)("Name")).
ToArray()
然后将它们添加到组合框中:
combobox.Items.AddRange(values)
答案 1 :(得分:1)
在下面的示例中,我假设位于ComboBox1
的名为Sheet1
的Combobox。
我还假设该表名为Table1
。您需要根据需要进行调整。
此解决方案是VBA。
Sub SortedComboFromTableColumn()
Dim rng As Range
With CreateObject("System.Collections.ArrayList")
For Each rng In Range("Table1[Name]")
.Add rng.Value
Next
.Sort
Sheets(1).ComboBox1.List = Application.Transpose(.toarray())
End With
End Sub