我是VBA的新手并且一直在玩基础知识。
我的任务是根据标题和列的数据从某一行中提取数据。例如,如果标题下的列" ENG JOBSCOPE" <> ""然后提取该数据的行。
但是,当我的宏循环通过所有工作表时,如果我想使用range.find找不到的条件找不到,那么它会给我一个错误91。
我已经阅读了有关使用标准化的信息,但我似乎无法使其正常工作。
目前我正在使用此代码
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
&#34; ENG JOBSCOPE&#34;是标题。但是,有些工作表包括&#34; ENG JOB SCOPE&#34;。
是否有另一种方法可以用来制作它,以便它能找到列号而不管它们之间的空间或大小写?
此外,某些工作表并不包含&#34; ENG JOBSCOPE&#34;。有没有办法让代码继续搜索而不停止错误91? 我接下来尝试使用错误转到goto,但数据混乱了。
我希望我输入的内容足够或足够清晰。如果不够清楚,请告诉我输入该论坛需要输入的内容。
非常感谢你!
答案 0 :(得分:1)
使用通配符。
EJOB = Range("A1:DE1").Find(What:="ENG*JOB*SCOPE", LookIn:=xlValues, _
LookAt:=xlWhole, MatchCase:=True, SearchFormat:=False).Column
如果希望Find无论大小写是否正常工作,请键入MatchCase:= False。