我想用VBA做什么-用数组过滤表并删除行。我的数组有4个元素(在一个循环中更改为5个不同的集合)。被过滤的列有5个元素。我只想得到1。这在一个循环中,它将创建5个报告,每个报告根据第29列针对不同的元素进行过滤。
如果在调试模式下,我手动过滤该列,然后跳过该行,则在尝试再次清除所有过滤器时,我在下面有第二行相同的错误5行。
这是788部分中的765和770行。其他所有操作均正常进行。
FilterOutArray-具有4个元素的数组(每个元素为Variant / String)。第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
Run Code Online (Sandbox Code Playgroud)
在该行中:
ActiveSheet.Range(Cells(1, 1).Cells(29, LastRow)) ...
Run Code Online (Sandbox Code Playgroud)
应该是逗号,而不是点。像这样:
ActiveSheet.Range(Cells(1, 1), Cells(29, LastRow)) ...
Run Code Online (Sandbox Code Playgroud)
“有趣的”部分是这样的:Cells(1,1),Cells(2,2).Address是一种有效的语法,给出了对应单元格的地址,向右1列,向下1行,例如B2。
无论如何,通常来说,请考虑如何避免在Excel VBA中使用“选择”。写入由2个单元格定义的范围的“正确”方法是这样的:
With Worksheets(1)
Set myRange = .Range(.Cells(1, 1), .Cells(5, 5))
End With
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |