【发布时间】:2020-05-22 14:57:51
【问题描述】:
因此,Listbox1 被填充(来自另一个子,链接到工作簿中的单元格范围),用户可以使用命令按钮(添加)从该列表框中选择(一次一个)要显示在 Listbox2 中的项目移动它们。我几乎设法让它完美。我的问题是,如果用户 only 选择了 Listbox1 中的最后一个条目,则 Listbox1 中所有其他可能的条目都将被删除(空白/不可见/无法选择)。
我只想从 Listbox1 中删除从 Listbox1 中选择的条目,因为它出现在 Listbox2 中。
代码如下:
Private Sub Add_Click()
Dim i as Integer
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
Me.ListBox2.AddItem Me.ListBox1.List(i)
End If
Next i
For i = Me.ListBox1.ListCount - 1 To 0 Step -1
If Me.ListBox1.Selected(i) = True Then
Me.ListBox1.RemoveItem i
End If
Next
End Sub
如果这里有什么明显的地方,我真的很抱歉。但是这些列表框已经让我发疯了大约 3 天。 提前致谢
【问题讨论】:
-
您究竟是如何填充框 1 的?顺便说一句,如果列表框是单选的,你可以避免第二个循环。
-
Listbox1 由一个单独的子组件填充:
ListBox1.AddItem Sheets("lookups").Range("H3")。有三个单独的行/引用的单元格。理想情况下,会有一个动态选择的命名范围,但它从未落地。 -
您是否设置了行源 - 检查属性 - 因为这会导致问题?我无法复制您的错误。 listbox1 有多少项?
-
我已经阅读了大量关于 RowSource 的帖子,并且已经避开了。我的 Listbox1 项目的完整代码是:``` Private Sub UserForm_Activate() If Sheets("EnteredData").Range("E4") = "NDS" Then ListBox1.AddItem Sheets("lookups").Range("F3 ") ListBox1.AddItem Sheets("lookups").Range("F4") ListBox1.AddItem Sheets("lookups").Range("F5") 否则 ListBox1.AddItem Sheets("lookups").Range("H3" ) ListBox1.AddItem Sheets("lookups").Range("H4") ListBox1.AddItem Sheets("lookups").Range("H5") End If End Sub ```
-
但是 RowSource 中肯定什么都没有