我想用VBA做什么-用数组过滤表并删除行。 我的数组有4个元素(在一个循环中更改为5个不同的集合)。被过滤的列有5个元素。我只想得到1。这是一个循环,它将创建5个报告,每个报告根据第29列针对不同的元素进行过滤。
如果在调试模式下,我尝试手动过滤该列,然后跳过该行,则在尝试再次清除所有过滤器时,我在下面有第二行相同的错误5行。
这是788部分中的第765和770行。其他所有操作均正常进行。
FilterOutArray-具有4个元素的数组(每个变量/字符串)。第29列有5个不同的值,没有空格
我尝试用字符串引用“ Criteria1”,以查看过滤一个元素是否有效,但是不行。
'Run-time error: '1004' on row below
ActiveSheet.Range(Cells(1, 1).Cells(29, LastRow)).AutoFilter Field:=29, Criteria1:=FilterOutArray, Operator:=xlFilterValues
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
'Run-time error: '1004' on row below
ActiveSheet.Range(Cells(1, 1).Cells(29, 9999)).AutoFilter Field:=29
答案 0 :(得分:6)
在此行:
ActiveSheet.Range(Cells(1, 1).Cells(29, LastRow)) ...
应该是逗号,而不是点。像这样:
ActiveSheet.Range(Cells(1, 1), Cells(29, LastRow)) ...
“有趣”的部分是这样的:Cells(1,1),Cells(2,2).Address
是有效的语法,给出了对应单元格的地址,右1列,下1列,例如B2
。
总而言之,请考虑使用How to avoid using Select in Excel VBA。而写由2个单元格定义的范围的“正确”方法是这样的:
With Worksheets(1)
Set myRange = .Range(.Cells(1, 1), .Cells(5, 5))
End With