VBA: 如何使用 Find 搜索 *?
VBA: How to search for * using Find?
我正在尝试在工作表的列中搜索字符串 **,但我无法执行此操作,因为 * 在使用查找时也用作通配符。更复杂的是,同一列还包括 *,所以我需要专门找到 **。到目前为止,我已经尝试了下面的代码,在这两种情况下,它似乎都找到了第一个非空单元格,它恰好是 *.
Set searchRange = Workbooks(fileName).Worksheets(1).Range("B:B").Find(Chr(42) & Chr(42), LookAt:=xlWhole)
或者:
Set searchRange = Workbooks(fileName).Worksheets(1).Range("B:B").Find("**", LookAt:=xlWhole)
我之前已经多次使用Chr()成功转义",但在这里似乎不起作用。我搜索了解决方案,但这个解决方案是我迄今为止找到的唯一答案,但没有工作。
另一种解决方案可能是遍历范围并进行字符串比较。不过,这感觉像是一个相当丑陋的解决方案。
编辑:比我想象的要容易。显然这有效:
Set searchRange = Workbooks(fileName).Worksheets(1).Range("B:B").Find("~*~*", LookAt:=xlWhole)
通配符 (*) 可以使用波浪符 (~) 进行转义,因此可以这样解决:
Set searchRange = Workbooks(fileName).Worksheets(1).Range("B:B").Find("~*~*", LookAt:=xlWhole)
我正在尝试在工作表的列中搜索字符串 **,但我无法执行此操作,因为 * 在使用查找时也用作通配符。更复杂的是,同一列还包括 *,所以我需要专门找到 **。到目前为止,我已经尝试了下面的代码,在这两种情况下,它似乎都找到了第一个非空单元格,它恰好是 *.
Set searchRange = Workbooks(fileName).Worksheets(1).Range("B:B").Find(Chr(42) & Chr(42), LookAt:=xlWhole)
或者:
Set searchRange = Workbooks(fileName).Worksheets(1).Range("B:B").Find("**", LookAt:=xlWhole)
我之前已经多次使用Chr()成功转义",但在这里似乎不起作用。我搜索了解决方案,但这个解决方案是我迄今为止找到的唯一答案,但没有工作。
另一种解决方案可能是遍历范围并进行字符串比较。不过,这感觉像是一个相当丑陋的解决方案。
编辑:比我想象的要容易。显然这有效:
Set searchRange = Workbooks(fileName).Worksheets(1).Range("B:B").Find("~*~*", LookAt:=xlWhole)
通配符 (*) 可以使用波浪符 (~) 进行转义,因此可以这样解决:
Set searchRange = Workbooks(fileName).Worksheets(1).Range("B:B").Find("~*~*", LookAt:=xlWhole)