代码之家  ›  专栏  ›  技术社区  ›  Robin Chander

Application.评估运行时错误类型不匹配

  •  0
  • Robin Chander  · 技术社区  · 10 年前

    我在VBA中的以下函数调用中遇到此运行时错误类型不匹配

    Dim sTest As String
    sTest = "=Search(" & Chr(34) & "MyString" & Chr(34) & Chr(44) & "A2" & ")>0"
    ''the above evaluates to =Search("MyString",A2)>0
    Application.Evaluate(sTest)
    

    因此求值函数抛出运行时错误类型不匹配

    我试过了

    sTest = "=Search(" & Chr(34) & "MyString" & Chr(34) & Chr(44) & Chr(34) "Test MyString" & Chr(34) ")>0"
    

    还是一样的错误

    当我在excel公式栏中使用上面的字符串时,它起作用了!!

    我试过了

    sTest = "=Search(""MyString"", ""Test MyString"")>0"
    

    它在VBA中工作

    令我惊讶的是

    sTest = "=Search(" & Chr(34) & Chr(34) & "MyString" & Chr(34) & Chr(34) & Chr(44) & Chr(34) & Chr(34) & "Test MyString" & Chr(34) & Chr(34) & ")>0"
    

    Din工作

    有人能帮忙解释一下为什么第一个代码块不工作吗?

    1 回复  |  直到 10 年前
        1
  •  2
  •   Tim Williams    10 年前

    如果要在字符串中包含引号,只需将其加倍即可:

    sTest = "=Search(""MyString"",A2)>0"
    

    对我来说,这比使用 Chr(34)

    注意,如果未找到字符串,SEARCH()将返回错误,而不是0。