来自筛选列表的Excel 2013 VBA用户填充数组

时间:2015-03-25 15:42:11

标签: arrays excel excel-vba vba

我创建了一个VBA例程(使用宏记录),使用两列过滤将产品和数量复制到新工作表。这很好用,但我想允许用户从两个过滤列表中选择项目和数量,然后将它们添加到两个数组中,然后将这些数组复制到新工作表中。

数量数组可以简化,因为它只是与制造商数组关联的数量不等于零

代码段;

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 个答案:

答案 0 :(得分:0)

要么(1)你设置了第一个过滤器并将你拥有的内容复制到新表(你提到的已经工作),然后将过滤器设置为新的,只需将新的结果集附加到新的结尾。表格或(2)你"保存"结果设置为内存中的数组,然后将数组一个接一个地转储到新工作表。结果是一样的。

所以,在我看来,选项1对你来说应该很容易。选项2和选项1一样简单。只需调暗变量变量并为其分配您希望存储在内存中的范围:

Dim vArray As Variant

vArray = Sheets("Materials").Range("A3:I524")  'the range you wish to copy

我是否错过了这一点,或者这就是你所需要的?