我正在尝试在工作表的列中搜索字符串**,但是我无法使用此工作,因为*在使用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)
答案 0 :(得分:1)
Wildcard (*) can be escaped using tilde (~), this can thus be solved like this:
Set searchRange = Workbooks(fileName).Worksheets(1).Range("B:B").Find("~*~*", LookAt:=xlWhole)