在Find方法中,VBAtypes不匹配

我试图创build一个函数,如果在一行中有一个单词“市场”,将在每一行的第11列input“是”。 但是我得到的错误不匹配。

Option Explicit Sub findMarketing() Dim r As Range For Each rw In Worksheets("Sheet1").Rows Set r = rw.Range("A:G") If r.Find(What:="market") Then rw.Columns(11).Value = "Yes" Else rw.Columns(11).Value = "No" End If Next rw End Sub 

你可以从评论中得到答案(感谢Ron Rosenfeld ),但是你也不想经过1,048,576行。 使用Intersect函数对任意特定行的列A:G进行操作,并将行限制为工作表的.UsedRange,以便仅检查实际上具有数据的行。

我已经改变了在A:G列中定位“市场”的方法,因为您没有指定足够的参数。 .Find函数依赖于最后使用的内容。 如果用户在工作表上使用了“查找”或“replace”,并且更改了“匹配大小写”,“匹配整个内容”等,那么这就是您将要操作的内容。 我假设你想要一个不区分大小写的完整单元格值匹配。 显然一个通配符部分匹配是必需的。

 Option Explicit Sub findMarketing() Dim r As Range, rw As Range With Worksheets("Sheet1") For Each rw In .UsedRange.Rows Set r = Intersect(rw, .Range("A:G")) If IsError(Application.Match("*market*", r.Cells, 0)) Then .Cells(rw.Row, "K") = "No" Else .Cells(rw.Row, "K") = "Yes" End If Next rw End With End Sub