我在编写用户表单时遇到问题,该用户表单从一个多列列表框中获取所选数据并将其添加到同一用户的另一个列表框中。添加后,数据从源Listbox中移除
“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'
“无法设置列表属性。属性数组索引无效。”
我环顾四周,但似乎无法确定如何正确使用这些属性。任何帮助是极大的赞赏。
最佳答案
为了做到这一点,就像 Daniel 说的,我们需要使用 add 函数。
在下面的代码中,您可以看到我如何使用 .additem
在我的 with block 中起作用。
为了在将选择移到新的列表框后删除选择,我运行了一个向后循环。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
关于vba - Excel 多选、多列列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31273460/