将.find用于多个字符串VBA

时间:2014-02-24 16:27:06

标签: excel vba excel-vba

是否可以一次将.find用于多个字符串?例如,

worksheet.find(What:=“String1”,“String1”,“String3”等...)

它现在不起作用,因为它期望After参数,但我需要检查表单中的某组字符串以准确确定我需要读取的行数(我的宏抓取)来自工作簿的数据并将其发布到另一个工作簿中。)

我知道我总是可以使用一个巨大的If Or语句并循环遍历所有的行和列,我只想使用.find会更清洁。

2 个答案:

答案 0 :(得分:1)

你不能用.find和.find来做效率非常低效,用IF循环,如果你想避免大的OR:

if instr("st1#st2#st3#...",cells(..,..)) & "#")>0 then

细胞价值“保罗”

匹配

MsgBox InStr("Peter#Paul#Ringo#", "Paul" & "#")

不匹配

MsgBox InStr("Peter#Paul#Ringo#", "Pau" & "#")

不匹配

MsgBox InStr("Peter#Paul#Ringo#", "Paul Mc" & "#")

答案 1 :(得分:0)

您可以使用double for循环,其中外部for循环将迭代所有单元格,而内​​部for循环搜索每个单元格以查找您正在查看的字符串并使用.find函数。它会找到第一次出现,你可以做任何你想做的事。

设置rng = [你正在搜索的范围](假设这是一列,可以通过添加另一个for循环来调整2d数组的代码) strings [] =搜索字符串数组

For i = 1 to rng.cells.count
    For j = 0 to strings.count
        found = instr(strings[j],rng.cells(i,1)
        If found >0 then
            'whatever you want to do
        Endif
    Next j
Next i