我有两张纸——“标准”和“临时”。
我想在标准表中应用过滤器,其中标准将从“临时”表的事件单元格中获取。我的下面的宏由于某种原因失败了。
Sub FilterTest1()
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "temporary"
ActiveSheet.[A:A].Value = Worksheets("Criteria").[A:A].Value
Cells.RemoveDuplicates Columns:=Array(1)
Range("A1").EntireRow.Delete
Dim B As Integer
B = Cells.CurrentRegion.Rows.Count
With Sheets("Temporary")
Selection.End(xlDown).Select
End With
With Sheets("Criteria")
.Range("$A:$B").AutoFilter
.Range("$A:$B").AutoFilter field:=1, Criteria1:=Worksheets("temporary").ActiveCell.Value, Operator:=xlOr
End With
End Sub
宏以 a 结尾
run time error 438 "Object doesnt support this property or method.
什么是正确的方法?
添加更多信息:目标是一一更改标准。现在它应该选择 Temporary!A:A 中的最后一个事件单元格,但稍后我将在 Temporary!A:A 中向上偏移选择,并将每个事件单元格表作为过滤标准。
最佳答案
将 Temporary!A:A 中的最后一个值应用于 var 比依赖 Select 和 Selection 更容易。
但是,您的所有代码似乎都归结为 AutoFilter 将 Criteria!A:A 中的最后一个值作为过滤器。添加一个新工作表,复制 Criteria!A:A 中的值,删除重复项,然后选择 Temporary!A:A 中最后一个填充的单元格并没有改变它。如果您对 Temporary!A:A 中的数据进行了排序,它可能会发生变化,但您当前所做的任何事情都不会改变 Criteria!A:A 中填充的最后一个值的标准。
Sub FilterTest1()
dim c as variant
with workSheets("Criteria")
c = .cells(.rows.count, "A").end(xlup).value
.Range("A:B").AutoFilter field:=1, Criteria1:=c
End With
End Sub
关于excel - VBA:从另一张表中获取引用值作为过滤条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51130177/