功能在Excel中查找

时间:2017-02-02 16:54:20

标签: excel-vba vba excel

下午好,

我有一个小问题,这是我的问题。这里有没有人可以帮我找到我做错的事情? 我试图在不同的工作表中找到一个员工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,我需要它们以这种格式用于更大文件下的不同用法)

更新08/02/2017

我已经设法整理代码:将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

2 个答案:

答案 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适用于rngSelecting之前,您应首先选择或激活包含rng的工作表。