下午好,
我有一个小问题,这是我的问题。这里有没有人可以帮我找到我做错的事情? 我试图在不同的工作表中找到一个员工ID,需要使用以下VBA代码在25000行中进行搜索(请记住,每次搜索时员工ID都会发生变化)
Dim id As Range, rng As Range
Set id = Sheets("TeamList").Cells(5, 7)
Set rng = Sheets("Sheet1").Select.Columns(20).Find(what:=id, LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False).Select
Set id = Nothing
Set rng = Nothing
当我运行此代码时,我收到错误91 Click here
使用的id的示例Click here - 我还应该提到这个id被格式化为值(乘以1,我需要它们以这种格式用于更大文件下的不同用法)
我已经设法整理代码:将Dim从范围更改为字符串并删除" Set"但添加了#34;细胞"。 见下面的例子:
Dim id As String, hrs As String
id = Sheets("TeamList").Cells(5, 7)
hrs = Sheets("TeamList").Cells(4, 7)
Sheets("Sheet1").Select
Sheets("Sheet1").Cells.Find(what:=id, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
答案 0 :(得分:1)
删除选择。也是首先检查找到值的好习惯。
Dim id As Range, rng As Range
Set id = Sheets("TeamList").Cells(5, 7)
Set rng = Sheets("Sheet1").Columns(20).Find(what:=id, LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False)
If not rng is nothing then application.goto rng
Set id = Nothing
Set rng = Nothing
答案 1 :(得分:0)
我无法完全调试您的代码,但通常id
应该是值而不是范围对象。 (因此 设置 不应用于id
)。
如果Set
适用于rng
,Selecting
之前,您应首先选择或激活包含rng
的工作表。