我正在尝试在工作表“此工作表”上找到公式为“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)
但是,我不想激活工作表“这个工作表”。有没有办法做到这一点?我需要将此单元格限定为此工作表“此工作表”而不是整个工作簿。
答案 0 :(得分:3)
使用范围和工作表对象限定Set<Map.Entry<K, V>>
方法:
Find()
在VBA中极其罕见,您需要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)
或Activate
任何事情。
答案 1 :(得分:2)
虽然SO提供了您的问题的答案,但这只是一个额外的信息 不要选择它作为答案。 :)
使用条款
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
了解默认值
如果您知道参数的默认值并且这是您需要的,那么也可能不明确它。您包含的上述参数都是默认值(LookAt
除外),所以不如省略它们?当我说默认时,重启(第一次)时它是Excel设置。
With Worksheets("SheetName")
.Cells.Find(What:="CAL JUMP INTENS", _
After:=.Range("A1"), _
LookAt:=xlWhole)
End With
或者在您的情况下,您确实无需提供After
参数(因为您正在搜索整个工作表)。所以,
Worksheets("SheetName").Cells.Find("CAL JUMP INTENS", , , xlWhole)
工作得很好。
重要:强>
正如所指出的那样,LookIn
,LookAt
和SearchOrder
的查找方法的默认属性是HERE中指出的最后一次使用的设置。
“了解每次使用Find方法时都会保存LookIn,LookAt和SearchOrder设置非常重要。因此,每次使用Find方法时都应该明确指定这些设置。如果你不要,你冒着使用你不知道的设置使用查找方法的风险。“