【发布时间】:2018-02-12 16:39:17
【问题描述】:
我是 VBA 新手,一直在玩基础知识。
我的任务是根据标题和列的数据从某一行中提取数据。例如,如果标题“ENG JOBSCOPE”“”下的列,则提取该数据的行。
但是,当宏循环遍历所有工作表时,如果我想使用 range.find 查找的条件找不到,我会遇到错误 91。
我已经阅读了有关使用 normalize 的信息,但我似乎无法使其工作。
目前我正在使用此代码
J = 1
For Each ws In x.Worksheets
For Each wks In y.Worksheets
With x.Worksheets(ws.Name)
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
For i=2 to Lastrow
EJOB = Range("A1:DE1").Find(What:="ENG JOBSCOPE", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True, SearchFormat:=False).Column
'Error 91 comes from the above line ^^^
EJobs = ws.Cells(i, EJOB).Value
If EJobs <> "" then
x.Sheets("ID").Rows(i).Copy
y.Sheets("ID").Range("A" & j).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
J=J+1
End if
Next i
Next wks
Next ws
End sub
“ENG JOBSCOPE”是一个标题。但是,有些工作表由“ENG JOB SCOPE”组成。
是否有另一种方法可以让我使用它来找到列号,而不管它们之间的空格或大小写如何?
此外,某些工作表不包含“ENG JOBSCOPE”。有没有办法让代码继续搜索而不会因错误 91 而停止? 我尝试过使用 on error goto next,但数据变得混乱。
我希望我输入的内容足够或足够清晰。如果不够清楚,请告诉我需要输入什么,因为我是这个论坛的新手。
非常感谢您!
【问题讨论】: