我正在检索特定列的所有值并将所有值存储在数组中,以便我可以使用这些值来应用自动过滤器。
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
答案 0 :(得分:1)
VBScript不解析字符串中的变量。当您将a(i-2)
放在双引号中时,它将变为文字字符串"a(i-2)"
,而不是数组i-2
的字段a
的值。
将.AutoFilter 2, "=a(i-2)"
更改为.AutoFilter 2, "=" & a(i-2)
,问题就会消失。