使用数组值在列上应用自动筛选

时间:2013-02-17 13:02:32

标签: excel excel-vba vbscript vba

我正在检索特定列的所有值并将所有值存储在数组中,以便我可以使用这些值来应用自动过滤器。

rowcount=objExcel.Activeworkbook.Sheets(1).UsedRange.Rows.count

Dim a()
Redim Preserve a(rowcount)
'msgbox rowcount

'Storing all column values in an array'

for i=2 to rowcount
  a(i-2) = objSrcWorksheet.Cells(i,7).Value
Next

'Checking values of array'
for i=2 to rowcount
  msgbox a(i-2)

'Applying Autofilter'
 With objSrcWorksheet


.Range("G1").AutoFilter 2,"=a(i-2)"  'Problem is here'
'.Range("G1").AutoFilter 2,"=2"     'While hardcoded values are working'

 End With
Next

1 个答案:

答案 0 :(得分:1)

VBScript不解析字符串中的变量。当您将a(i-2)放在双引号中时,它将变为文字字符串"a(i-2)",而不是数组i-2的字段a的值。

.AutoFilter 2, "=a(i-2)"更改为.AutoFilter 2, "=" & a(i-2),问题就会消失。