在VBA中find指定Excel工作表上的单元格而不激活工作表

我试图在工作表“这个工作表”上find一个公式为“CAL JUMP INTENS”的单元格。 以下代码工作。

worksheets("this worksheet").activate Set target = Cells.Find(What:="CAL JUMP INTENS", After:=ActiveCell, _ LookIn:=xlFormulas, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=True, SearchFormat:=False) 

不过,我不想激活工作表“这个工作表”。 有没有办法做到这一点? 我需要find这个单元格限制在这个工作表“这个工作表”,而不是整个工作簿。

使用范围和图纸对象限定Find()方法:

 Set target = Sheets("this worksheet").Cells.Find(What:="CAL JUMP INTENS", After:=ActiveCell, _ LookIn:=xlFormulas, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=True, SearchFormat:=False) 

VBA中极less有您必须ActivateSelect任何东西。

尽pipeSO为您的问题提供了一个答案,但这只是一个附加信息。
不要select它作为答案。 🙂

  1. 与子句一起使用

     With Worksheets("SheetName") .Cells.Find(What:="CAL JUMP INTENS", _ After:=.Range("A1"), _ ' notice that this is referenced to your sheet LookIn:=xlFormulas, _ LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=True, _ SearchFormat:=False) End With 
  2. 知道默认值
    如果你知道参数的默认值,那就是你所需要的,那么就不用说明白了吧。 上面的参数都是默认值( LookAt除外),所以可以忽略它们? 当我说默认 ,这是Excel设置,当你重新启动(第一次)。

     With Worksheets("SheetName") .Cells.Find(What:="CAL JUMP INTENS", _ After:=.Range("A1"), _ LookAt:=xlWhole) End With 

    或者在你的情况下,你真的不需要提供After参数(因为你正在search整个工作表)。 所以,

     Worksheets("SheetName").Cells.Find("CAL JUMP INTENS", , , xlWhole) 

    将工作得很好。

重要:
正如我们指出的那样, LookInLookAtSearchOrder的find方法的默认属性是在这里指出的最后使用的设置。

“了解每次使用查找方法时,设置LookIn,LookAt和SearchOrder都会被保存,这一点非常重要,因此每次使用查找方法时都应该明确指定这些设置,如果不,您将冒着使用“查找方法”的风险,而这些设置是您不知道的。