Excel 2013 VBA用户从筛选列表中填充的数组



我创建了一个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

我是没有抓住要点,还是这正是你所需要的?

最新更新