【发布时间】:2017-08-30 09:09:54
【问题描述】:
我正在尝试创建一个宏,允许我通过使用用户窗体和列表框选择它们来从数据库中报告某些客户端。我目前一直在寻找一种方法来选择某些客户端,但要处理该客户端下列出的每一行。
我使用的脚本将所有唯一值存储在一个集合中。我不确定如何在运行命令按钮中调用集合来处理与选定客户端相关的所有行,这意味着如果我要在附加图像中选择 CLN1 和 CLN3,我想要行 2:6 和 10 :12 已处理,其余已删除。
有没有办法做到这一点?
这是我正在使用的代码:
Private Sub UserForm_Initialize()
Dim i, rowrow As Integer
Dim Cell As Range
Dim Unique As New Collection
Dim Item As Range
LastNonEmptyRow = ThisWorkbook.Worksheets("myfile").Range("A1").End(xlDown).Row
On Error Resume Next
For Each Cell In ThisWorkbook.Worksheets("myfile").Range("A2:A" & rowrow)
Unique.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
For Each Item In Unique
ListBox1.AddItem Item
Next Item
End Sub
任何帮助将不胜感激 - 谢谢!
截图
【问题讨论】:
-
您可以使用脚本字典代替集合并将行存储在值中(您可以在循环遍历行时使用 Application.Union 构建 Range 对象)。使 Dictionary 对表单全局化,这样它就不会在
UserForm_Initialize执行完毕后立即超出范围。 -
请参阅stackoverflow.com/questions/36274110/…,了解此方法的示例。
-
您使用的是哪个变量?
rowrow还是LastNonEmptyRow?你设置Option Explicit了吗?