此代码可以看到任何错误吗?它已经运行了一段时间了,但是突然间我得到了
一直1004提取范围的字段名称缺失或无效
。我不知道为什么。自上次以来,我已经对Excel进行了非常多的修改,因此有时会突然出现。
Sub FilterMe()
Dim Num As Range
Dim Dt As Worksheet, Ft As Worksheet
Set Dt = Sheets("Data")
Set Ft = Sheets("FilterData")
Set Num = Sheets("FilterData").Range("G2")
Dt.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Ft.Range("O5:R10" & Num), CopyToRange:=Ft.Range("B12:V12"), Unique:=False
' Application.Calculation = xlCalculationAutomatic
' Application.ScreenUpdating = True
End Sub
调试器在此行显示错误:
CriteriaRange:=Ft.Range("O5:R10" & Num), CopyToRange:=Ft.Range("B12:V12"), Unique:=False
我尝试将Num
从Range
更改为Integer
,更改为String
,还有许多其他选择。但是出于某种原因,它不会接受。
答案 0 :(得分:0)
我请您花时间帮助我。我发现了问题所在。
我通常导入CSV文件,该文件将转换为基于该程序构建的excel数据库。不知何故,我的CSV文件被损坏了,并且更改了导入,因此标头一次与Advanced过滤器不同,所以当先进的过滤器试图找到我的值,因此无法根据条件找到它们。
祝你一整天愉快,谢谢
答案 1 :(得分:-1)
英尺范围(“ O5:R10”&Num)是错误的用法。尝试以下代码:
Dt.Range(“ A1”)。CurrentRegion.AdvancedFilter操作:= xlFilterCopy,_ CriteriaRange:= Ft.Range(“ O5:R10,”&Num.Address),CopyToRange:= Ft.Range(“ B12:V12”),Unique:= False