我有一个代码,在另一个文件中工作正常,但在一个类似的文件中,它将不再工作,我不知道错误可能是什么。
Sub Voorstel()
' voorstel om door te sturen naar de klant
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim lastRow As Integer
Dim r As Range, c As Range, sh As Worksheet
Set sh = ThisWorkbook.Sheets("Voorstel")
Set r = Workbooks.Add.Sheets(1).Range("A1").Resize(2, 6)
Set c = r.Offset(, 7).Resize(2, 1)
r.Resize(1) = Array(sh.[A11], sh.[B11], sh.[D11], sh.[F11], sh.[H11], sh.[J11])
c.Value = Application.Transpose(Array("TOT", "<>0"))
sh.Range("A11").CurrentRegion.AdvancedFilter 2, c, r
c.ClearContents
Application.DisplayAlerts = True
ActiveWorkbook.SaveAs Filename:="V:\Supply Chain Team\07. Analysebestanden Klanten\16. Behoeftebepaling\Proposal\Proposal" & _
Format(Date, " dd-mm-yyyy") & ".xlsx", FileFormat:=51
End Sub
我得到一个运行时错误1004 -提取区域缺少字段名或字段名无效。错误在这一行:sh.Range(“A11”).CurrentRegion.AdvancedFilter 2,c,r
我不得不承认我没有写这个代码自己,我(认为)理解它的大部分,但我不知道如何阅读代码的错误发生,什么是2在高级文件?
有人能帮我把这段代码写出来吗?
它需要过滤下表
我只想查看日期下面有数量的行。
非常感谢!
1条答案
按热度按时间8ehkhllq1#
首先,我将介绍更多描述性的变量名:
导致错误的最后一行想要执行以下操作:使用高级过滤器根据
criteriaRange
中的条件过滤listRange
的内容,并将结果复制到copyToRange
。高级过滤器是Excel现在很少使用的功能,这里是它在功能区上的图标图片:
我用这段代码做了一些实验。
如果你想这样做,你需要
Voorstel!A11
周围的数据(CurrentRegion
扩展A11
以包括附近的非空单元格),它有一个从A11
到J11
的标题行(至少A11,B11,D11,F11,H11,J11
必须是非空的,因为这些将被复制到新工作簿),可能包含criteriaRange
中引用的标题(只有一个:“TOT”,并且标准是它不应等于0)。如果
A11
周围没有任何数据,则会得到“Run-time error '1004':此命令至少需要两行源数据...”。如果
A11
周围有数据,但头的某些单元格(A11:J11
,更确切地说是A11,B11,D11,F11,H11,J11
)是空的,那么你会得到“运行时错误'1004':提取区域缺少字段名“”或字段名无效。有趣的是,如果没有“TOT”字段,您将不会收到错误消息,但不会复制任何数据。(您可以有多个“TOT”字段。)
作为演示,在运行您发布的函数之前,在即时窗口中发出以下命令:
预期的结果是新工作簿的第一个工作表的
A1:F1
范围将包含“TOT”,其A2:F2
范围将包含1,并且不会出现错误消息。