vba - Excel 多选、多列列表框

标签 vba excel listbox

我在编写用户表单时遇到问题,该用户表单从一个多列列表框中获取所选数据并将其添加到同一用户的另一个列表框中。添加后,数据从源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/

相关文章:

python - Excel 文件对比 Pandas 中的 read_excel

c# - 如何在 c# winforms 应用程序中获取列表框项目的 "key"?

excel - 检查整行是否具有值 0

vba - 每次我使用即时窗口时 MS Access 都会崩溃

excel - 在宏按钮调用期间完成对单元格的更改

python - 在 python tkinter 中每次连续单击后都会触发双击事件

python - tkinter 删除所有但未选择的项目

vba - 在 Outlook 中发送电子邮件时,如何自动运行宏?

java - 使用 Apache POI 从 json 数组编写 Excel 工作表

html - 从类中提取跨度值,VBA