【发布时间】:2020-07-08 19:13:41
【问题描述】:
我在 Excel 用户窗体中有一个组合框,我想按字母顺序排序。我不知道如何添加此功能,我将不胜感激。这是我的 VBA:
Private Sub Userform_Initialize()
' Sets range for ComboBox list
Dim rng As Range, r As Range
Set rng = Sheet1.Range("H2:H65536")
For Each r In rng
AddUnique r.value
Next r
End Sub
Sub AddUnique(value As Variant)
Dim i As Integer
Dim inList As Boolean
inList = False
With Me.ComboBox1
For i = 0 To Me.ComboBox1.ListCount - 1
If Me.ComboBox1.List(i) = value Then
inList = True
Exit For
End If
Next i
If Not inList Then
.AddItem value
End If
End With
End Sub
【问题讨论】:
-
组合框的值从何而来?如果源是工作表上的某个范围(可能是
Sheet1.Range("H2:H65536")),那么只需在将工作表上的值添加到组合框之前对它们进行排序。如果要使用 VBA 进行排序,请在对数据进行排序时录制宏,并使用 Excel 为您生成的 VBA 代码。 (如果您不确定如何手动对工作表进行排序,那么您需要找到一个好的 Excel 教程来帮助您入门。。) -
另外,您真的要在组合框中添加 65,000 个项目吗?我想你会有问题。
-
Sort combobox values alphabetically 的可能副本 ...(还有其他几个现有示例。)
-
我想我应该澄清一下。我无法对组合框值来自的 Excel 表进行排序,因为它是一个分组列表(项目、子项目、工头等)我没有 65,000 个条目,但它是一个动态列表,我的组合框代码从大约 1000 个或更多条目中过滤掉重复项。组合框中只有大约 10 个条目,最好按字母顺序排列。我花了一段时间才找到使这项工作正常工作的代码。作为 VBA 的新手,我不知道如何修改我所拥有的,这就是我问的原因。任何人都可以帮助我修改我到目前为止的代码吗?