我正在尝试编写一个代码,该代码将遍历我选择的列表框项目并将它们复制到我的工作表中的特定列。我有 3 个包含所有不同列表计数的列表框(listbox1 有 4 个选择,Listbox2 有 10 个选择,listbox3 有 5 个选择)。我希望代码能够遍历并复制每一行的数据。
这是我得到的结果示例: Listbox1: item1 (selected) item2 (not selected) item3 (not selected) item 4 (not selected) Listbox2: item1 (selected) (all other items not selected) Listbox3: item1 to第 5 项(已选择)。
我想编程以下列方式复制所选项目:
B列(参考listbox1):第1项;第 1 项;第 1 项;第 1 项;第1项:(共5次)C列(参考listbox2):第1项;第 1 项;第 1 项;第 1 项;第1项:(共5次)D列(参考listbox3):第1项;第 2 项: 第 3 项:第 4 项;第 5 项
我已经尝试了下面的代码,但它只将 listbox3 的第 1 项复制到第 5 项。
Private Sub Add_Level_Click()
Dim lItem As Long, lItem2 As Long, lItem3 As Long, ws As Worksheet
Set ws = Worksheets("Development Plan")
With ws
For lItem3 = 0 To Me.ListBox3.ListCount - 1
If Me.ListBox3.Selected(lItem3) Then .Cells(.Rows.Count, "D").End(xlUp).Offset(1) = Me.ListBox3.List(lItem3)
Next
For Item2 = 0 To Me.ListBox3.ListCount - 1
If Me.ListBox2.Selected(lItem2) Then .Cells(.Rows.Count, "C").End(xlUp).Offset(1) = Me.ListBox2.List(lItem2)
Next
For Item = 0 To Me.ListBox3.Selected(Item)
If Me.ListBox1.Selected(lItem) Then .Cells(.Rows.Count, "B").End(xlUp).Offset(1) = Me.ListBox1.List(lItem)
Next
预期结果截图:
用户表单选择:
我不知道如果在所有框中选择了多个项目会发生什么,但假设在前两个框中只选择了一个,请尝试此操作,并根据需要修改控件/按钮/范围名称。
Private Sub CommandButton1_Click()
Dim i As Long, j As Long
With Me
For i = 0 To .ListBox3.ListCount - 1
If .ListBox3.Selected(i) Then
Range("C" & Rows.Count).End(xlUp)(2).Value = .ListBox3.List(i)
j = j + 1
End If
Next i
For i = 0 To .ListBox1.ListCount - 1
If .ListBox1.Selected(i) Then
Range("A" & Rows.Count).End(xlUp)(2).Resize(j).Value = .ListBox1.List(i)
End If
Next i
For i = 0 To .ListBox2.ListCount - 1
If .ListBox2.Selected(i) Then
Range("B" & Rows.Count).End(xlUp)(2).Resize(j).Value = .ListBox2.List(i)
End If
Next i
End With
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句