获取 VBA 中所选列表框项目的顺序?

Getting the order of the selected ListBox items in VBA?

我有两个列表框,一个在左边,一个在右边。理想情况下,我希望用户能够 select 左侧列表框中的任何数据,然后按 "Add" 按钮让他 select 显示的项目显示在第二个列表框中列表框按照他们选择项目的顺序

如果他们首先 select 第 2 项,然后是第 23 项,然后是第 17 项,我希望右侧的列表框显示:

Item 2
Item 23
Item 17

现在我可以让用户点击项目 2,然后点击添加(编译器循环遍历列表项目并将 selected 的项目放在第二个列表中),然后是项目 23,然后添加,依此类推,我想将流程自动化一点。我知道列表框的 "Selected" 属性 是一个布尔数组。

我遇到了 this,但它在 jQuery 中,我一开始不知道:

想法?有什么方法可以让编译器记住 selection 的顺序吗?

您可以使用集合并跟踪您自己选择的索引。

Dim selectedIndices As New Collection

然后在选中或取消选中的列表框上使用 Add() 或 Remove() 函数

selectedIndices.Add(index)
selectedIndices.Remove(index)

取决于左侧列表框中项目的状态。然后不使用列表框的选定 属性,而是循环遍历您的集合并按该顺序添加它们。