Excel多选,多列列表框

我无法编码一个用户窗体,从一个多列列表框中select的数据,并将其添加到同一个用户的另一个列表框。 添加后,数据将从源列表框中删除

“ListBox”是数据所在的位置,“listbox1”是它被添加到的位置。

Private Sub add_Click() For i = 0 To ListBox.ListCount - 1 If ListBox.Selected(i) = True Then NextEmpty = ListBox1.ListCount ListBox1.List(NextEmpty, 0) = ListBox.List(i, 0) ListBox1.List(NextEmpty, 1) = ListBox.List(i, 1) ListBox1.List(NextEmpty, 2) = ListBox.List(i, 2) ListBox.RemoveItem (i) End If Next End Sub 

此代码给我一个运行时错误“381”无法设置列表属性。无效的属性数组索引。 我已经做了一些四处张望,但似乎无法确定如何正确使用这些属性。 任何帮助是极大的赞赏。

您不能将值设置为大于列表中的最大值的索引(并且最大值正好是ListCount (如果为零, ListCount-1 )。

所以,你必须add ListBox1.Add的值

为了做到这一点,就像Daniel说的那样,我们需要使用一个add函数。 在下面的代码中,您可以看到我在with-block中如何使用.additem函数。
将它移到新的Listbox后删除select,我运行一个向后循环。
For i = MainListBox.ListCount - 1 To 0 Step -1

 Private Sub add_Click() Dim i As Integer For i = 0 To MainListBox.ListCount - 1 If MainListBox.Selected(i) Then With ListBox1 .AddItem .List(.ListCount - 1, 0) = MainListBox.List(i, 0) .List(.ListCount - 1, 1) = MainListBox.List(i, 1) .List(.ListCount - 1, 2) = MainListBox.List(i, 2) End With End If Next i For i = MainListBox.ListCount - 1 To 0 Step -1 If MainListBox.Selected(i) Then MainListBox.RemoveItem (i) End If Next i End Sub