代码之家  ›  专栏  ›  技术社区  ›  masfenix

在VBA中对列表框进行排序

  •  0
  • masfenix  · 技术社区  · 16 年前

    我有一个带有值的列表框。现在我需要对列表框进行排序,但不是按字母顺序。

    您可以看到列表框中的值来自表。

    ------------------------
    | name | order |  size |
    ========================
     value1   4
     value2   3
     value3   1 
     value4   2
    

    我希望我能说清楚。因此列表框中有“value1,value2,value3,value4”项。我希望它按表中声明的顺序排序。列表框与表无关,并且没有“数据绑定”到它。价值观来自其他地方。

    使用的技术:vba,access 2007

    2 回复  |  直到 13 年前
        1
  •  0
  •   HansUp    16 年前

    听起来像 行源类型 对于您的列表框是“值列表”。由于值来自表,请更改 行源类型 到“表/查询”,然后使用查询 行源 :

    SELECT [name], [order]
    FROM YourTable
    ORDER BY [order];
    

    您不必在列表框中显示[订单]…将其列宽设置为零。

    您的列表框控件不必绑定到数据源字段就可以使用此方法。如果未绑定列表框,则不会存储用户选择,但列表框仍允许用户从列表框中进行选择。

    注意,我把[姓名]和[订单]用方括号括起来了,因为它们都是保留字。见 Problem names and reserved words in Access

        2
  •  -2
  •   Moon    13 年前
    Dim First           As Integer
    Dim Last            As Integer
    Dim a               As Integer
    Dim b               As Integer
    Dim Temp            As String
    Dim test()          As String
    
    First = LBound(test)
    Last = UBound(test)
    For a = First To Last - 1
        For b = a + 1 To Last
            If test(a) > test(b) Then
                Temp = test(b)
                test(b) = test(a)
                test(a) = Temp
            End If
        Next b
    Next a
    
    For a = 1 To UBound(test)
    
        lst_email.AddItem test(a) 'lst_email is a listbox
    
    Next