是否可以一次将.find
用于多个字符串?例如,
worksheet.find(What:=“String1”,“String1”,“String3”等...)
它现在不起作用,因为它期望After
参数,但我需要检查表单中的某组字符串以准确确定我需要读取的行数(我的宏抓取)来自工作簿的数据并将其发布到另一个工作簿中。)
我知道我总是可以使用一个巨大的If Or
语句并循环遍历所有的行和列,我只想使用.find
会更清洁。
答案 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