Excel 查找方法中的VBA类型不匹配

Excel 查找方法中的VBA类型不匹配,excel,vba,search,find,Excel,Vba,Search,Find,我正在尝试创建一个函数,如果一行中有一个单词“Market”,它将在每行的第11列中输入“Yes”。但是我得到了错误匹配 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.Colu

我正在尝试创建一个函数,如果一行中有一个单词“Market”,它将在每行的第11列中输入“Yes”。但是我得到了错误匹配

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

您从评论中得到了答案(谢谢),但您也不想浏览1048576行。使用Intersect函数对任何特定行上的A:G列进行操作,并将行限制为工作表的.UsedRange,以便只检查实际包含数据的行

我更改了您在A:G列中定位“市场”的方法,因为您没有指定足够的参数。.Find函数在很大程度上依赖于上次使用的内容。如果用户在工作表上使用了“查找”或“替换”,并更改了匹配大小写、匹配整个内容等,则这就是您要操作的内容。我假设您需要不区分大小写的完整单元格值匹配。[编辑]显然需要通配符部分匹配

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

由于
Range.Find
方法返回一个Range对象,因此会出现错误。按照您构建它的方式,将返回range对象的默认值(value属性)。但是您的代码正在查找布尔值,因此类型不匹配。代码中还有其他语法错误。我很惊讶没有被
Option Explicit
@RonRosenfeld发现,我把这个列编辑成了列。你能帮我把它构造成布尔值吗?如果在某个范围内找到“市场”,则第11列的值为“是”
如果不是r.Find(What:=“market”)则为空,谢谢!我是新来的。。。所有答案均为“否”,而不是完整的单元格值匹配。如果行中的单元格将包含market,则需要通配符匹配,如
…match(“*market*”,…
。顺便说一句,这是.Find方法可能失败的另一个原因。非常感谢@Jeeped先生!