将所选项目从列表框转移到工作簿中的下一个可用单元格
Transferring selected items from Listbox to next available cell in workbook
我有一个 Listbox1,用户 select 项要移至 Listbox2。我需要将所有内容从 Listbox2 移动到 Excel.
然后应该关闭用户窗体 Me
并且应该显示另一个用户窗体(UF1、UF2 或 UF3;G3 中的公式计算应该显示哪个新窗体)。
Private Sub CommandButton2_Click()
Dim i as integer
Dim LastRow As Long
LastRow = Sheets("EnteredData").Range("F" & Rows.Count).End(xlUp).Row
If Me.ListBox2.ListCount = 0 Then
MsgBox ("Please select at least one role")
Else
For i = 0 To ListBox2.ListCount - 1
Sheets("EnteredData").Range("F" & LastRow).Offset(1, 0).Value = ListBox2.List(i)
Me.ListBox2.RemoveItem i
Next i
End If
Unload Me
Sheets("EnteredData").Range("G3").Show
End Sub
问题:
- 如果 Listbox2 包含至少两项,运行-时间错误 381:无法获取列表 属性。行
Sheets("EnteredData").Range("F" & LastRow).Offset(1, 0).Value = ListBox2.List(i)
上的无效 属性 数组索引
- 在
Sheets("EnteredData").Range("G3").Show
中调用的 'next' 用户表单未显示所需的表单。 Unload Me
有效,但未显示新形式(例如 UF1)。
试试这个。
因为您正在删除项目,所以循环中断 - 每当您删除任何内容时都需要向后循环。
也就是说,这会导致您的物品被退回。
为了避免向后循环 (!),而是在最后使用 Clear
.
一次性删除所有项目
最后,但绝非最不重要的一点是,您需要在循环中更新 LastRow
变量以避免覆盖(尽管您可以完全放弃它)。
Private Sub CommandButton1_Click()
Dim i As Long
Dim LastRow As Long
For i = 0 To ListBox2.ListCount - 1
LastRow = Sheets("EnteredData").Range("F" & Rows.Count).End(xlUp).Row
Sheets("EnteredData").Range("F" & LastRow).Offset(1, 0).Value = ListBox2.List(i)
Next i
Me.ListBox2.Clear
End Sub
我有一个 Listbox1,用户 select 项要移至 Listbox2。我需要将所有内容从 Listbox2 移动到 Excel.
然后应该关闭用户窗体 Me
并且应该显示另一个用户窗体(UF1、UF2 或 UF3;G3 中的公式计算应该显示哪个新窗体)。
Private Sub CommandButton2_Click()
Dim i as integer
Dim LastRow As Long
LastRow = Sheets("EnteredData").Range("F" & Rows.Count).End(xlUp).Row
If Me.ListBox2.ListCount = 0 Then
MsgBox ("Please select at least one role")
Else
For i = 0 To ListBox2.ListCount - 1
Sheets("EnteredData").Range("F" & LastRow).Offset(1, 0).Value = ListBox2.List(i)
Me.ListBox2.RemoveItem i
Next i
End If
Unload Me
Sheets("EnteredData").Range("G3").Show
End Sub
问题:
- 如果 Listbox2 包含至少两项,运行-时间错误 381:无法获取列表 属性。行
Sheets("EnteredData").Range("F" & LastRow).Offset(1, 0).Value = ListBox2.List(i)
上的无效 属性 数组索引
- 在
Sheets("EnteredData").Range("G3").Show
中调用的 'next' 用户表单未显示所需的表单。Unload Me
有效,但未显示新形式(例如 UF1)。
试试这个。
因为您正在删除项目,所以循环中断 - 每当您删除任何内容时都需要向后循环。
也就是说,这会导致您的物品被退回。
为了避免向后循环 (!),而是在最后使用 Clear
.
最后,但绝非最不重要的一点是,您需要在循环中更新 LastRow
变量以避免覆盖(尽管您可以完全放弃它)。
Private Sub CommandButton1_Click()
Dim i As Long
Dim LastRow As Long
For i = 0 To ListBox2.ListCount - 1
LastRow = Sheets("EnteredData").Range("F" & Rows.Count).End(xlUp).Row
Sheets("EnteredData").Range("F" & LastRow).Offset(1, 0).Value = ListBox2.List(i)
Next i
Me.ListBox2.Clear
End Sub