我有一个Excel应用程序,它遍历工作表中包含工作表上的产品订单的工作表,并在工作表中搜索与搜索工作表中填充的各种条件相匹配的订单。然后,此工作表的内容将显示在列表框中。有几个用户表单允许用户选择订单,然后操作订单。完成此操作后,所操作的顺序可能不符合搜索条件,因此我希望清除列表框中的内容和选定的行。我试过无数次,但似乎没有什么效果。我最新的一份清单是:
Private Sub ClearListBox()
UserForm5.lstOpenO.ListIndex = -1
UserForm5.lstOpenO.RowSource = ""
End Sub
但是,我已经尝试将所有行的UserForm5.lstOpenO.Selected设置为false。我已经尝试过清除搜索工作表,然后显示只应该在列上显示标题的内容,但是所选行中的突出显示仍然存在。
任何帮助都将不胜感激。
布鲁斯
发布于 2022-08-29 07:25:51
首先,您不应该在代码中使用userform的默认实例。这会导致矛盾的行为
我建议
Private Sub ClearSelectionInListBox()
Dim varItm as variant
With lstOpen0
varItm = .MultiSelect
.MultiSelect = 0
.MultiSelect = 1
.MultiSelect = varItm
End With
End Sub
这将清除列表框中的选择。
现在还不清楚你是否真的想清除内容。因为如果您愿意,那么考虑清除所选内容是没有意义的。
如果要清除列表框,则不需要首先清除所选内容。
Private ClearListBox()
With lstOpen0
.RowSource = ""
.Clear
End With
End Sub
但在那之后,你需要再次填写列表框。
进一步阅读
https://stackoverflow.com/questions/73523552
复制相似问题