VBA:如何使用Find搜索*?

时间:2016-10-19 13:56:20

标签: excel vba excel-vba escaping wildcard

我正在尝试在工作表的列中搜索字符串**,但是我无法使用此工作,因为*在使用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)

1 个答案:

答案 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)

Official source, posted by Axel Richter in comments