我的代码是
With ActiveSheet
.AutoFilterMode = False
.Range("23:23").AutoFilter
End With
这在Excel 2010中运行良好,但在Excel 2016中我得到: -
运行时错误'1004' Range类的AutoFilter方法失败
另外,我可以手动点击功能区中的过滤器图标(在数据>过滤器下)但不能使用VBA代码执行此操作
任何想法都非常感激。
答案 0 :(得分:1)
当您尝试按空行过滤时,AutoFilter
会出现1004
错误。尝试在行23
上放置一些内容并再次过滤它:
Public Sub TestMe()
With ActiveSheet
.AutoFilterMode = False
.Range("23:23").Cells(1) = 1
.Range("23:23").Cells(2) = 2
.Range("23:23").AutoFilter
End With
End Sub
如果有效,那么你只是在第23行没有值,因此无法应用自动过滤器。
通常,Excel中的AutoFilter
有一些奇怪的行为。例如,如果您打开一个新的Excel文件并运行以下代码:
Public Sub TestMe()
With ActiveSheet
.AutoFilterMode = False
'.Range("23:23").Cells(1) = 1
'.Range("23:23").Cells(2) = 2
.Range("23:23").AutoFilter
End With
End Sub
它会给你1004
错误。我们把这个时间称为动力 FirstTime 。
然后,如果您取消注释这两个范围并运行它,则会出现AutoFilter
。
现在奇怪的部分 - 删除工作表中的所有单元格,在 FirstTime 中注释回两个范围,它看起来就像它的样子。但是如果你运行代码,它会在空的第23行放置一个AutoFilter而没有问题。
答案 1 :(得分:0)
删除现有文件管理器,然后再次运行