VB:使用表中的值填充组合框

时间:2014-12-04 17:32:32

标签: vb.net vba visual-studio-2013 vb6

我有下表:

    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))

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