我创建了一个VBA例程(使用Macro Record),通过对两列进行筛选,将产品和数量复制到新的工作表中。这很好,但我希望允许用户从两个过滤列表中选择项目和数量,并将它们添加到两个数组中,然后将它们复制到新的工作表中。
数量阵列可以简化,因为它只是与制造商阵列相关的数量,不等于零
代码段;
intCount = ActiveWorkbook.Sheets.Count
Sheets("Materials").Select
ActiveSheet.Range("$A$3:$I$524").AutoFilter Field:=2, Criteria1:=Array( _
"Castel", "CEM", "Honeywell", "TYCO"), Operator:=xlFilterValues
ActiveSheet.Range("$A$3:$I$524").AutoFilter Field:=8, Criteria1:=Array( _
"1.00", "10.00", "100.00", "2.00", "20.00", "24.00", "35.00", "4.00", "43.00", "5.00", _
"96.00"), Operator:=xlFilterValues
我假设每个数组元素都需要定义为一个变量,然后传递给数组。我不知道如何向用户展示要筛选的内容。创建一个用户表单并填充所有制造商?实现这一目标的最有效方法是什么?
要么(1)设置第一个过滤器并将您所拥有的内容复制到新的工作表(您提到的工作表已经在工作),然后将过滤器设置为新的内容,只需将新的结果集附加到新工作表的末尾;要么(2)将结果集"保存"到内存中的一个数组中,然后将数组一个接一个地转储到新的表中。结果是一样的。
所以,在我看来,选项1对你来说应该很容易。选项2和选项1一样简单。只需调暗一个变量,并为其分配您希望存储在内存中的范围:
Dim vArray As Variant
vArray = Sheets("Materials").Range("A3:I524") 'the range you wish to copy
我是没有抓住要点,还是这正是你所需要的?