【发布时间】:2020-08-09 12:16:47
【问题描述】:
简而言之
- 我正在为“psiTimBeamLabel1”搜索单列范围
- 出于某种原因,Vba 的 .Find 函数正在查找“psiTimBeamLabel10”作为匹配项。
背景
我正在搜索一个命名范围 (rngCellsList),它是单列单元格。在失败的情况下 - 我正在寻找的值是“psiTimBeamLabel1”这个项目在列表中出现了几次。每次在列表中找到它时,我都会进行一些处理。我的代码解释如下:
Set rngCell = rngCellsList.Find("psiTimBeamLabel1")
strFoundCellAddr = rngCell.Address
Do
... some processing
Set rngCell = rngCellList.Find("psiTimBeamLabel1",rngCell)
Loop Until rngCell is Nothing or rngCell.Address = strFoundCellAddr
基本上
- 搜索范围以找到字符串的第一个实例
- 记下第一个实例的地址
- 开始一个循环并进行一些处理
- 在循环结束之前 - 再次搜索,盯着最近找到的位置
- 循环直到未找到,或者唯一的实例是第一个找到的位置
到目前为止,这一直很好。还有其他几个例子,列表中有多个,我的逻辑以前有效。
在这种特殊情况下,我在列表中有几个“psiTimBeamLabel1”实例。但我也有几个“psiTimBeamLabel10”——由于某种原因,在搜索“psiTimBeamLabel1”时,外观是 .Finding “psiTimBeamLabel10”
知道为什么或如何解决这个问题吗?
谢谢,肯
【问题讨论】:
-
您必须搜索整个单元格内容,否则会匹配。
-
尝试将
rngCellList.Find("psiTimBeamLabel1",rngCell)更改为rngCellList.Find(What:="psiTimBeamLabel1", After:=rngCell, LookAt:=xlWhole。 -
Find() 会记住上次使用时的参数,因此在 VBA 中使用时应始终包含至少
lookIn和lookAt参数。 -
该死的。当然。谢谢。