Application.Match提供类型不匹配

时间:2014-12-04 19:50:49

标签: vba excel-vba excel

我正在尝试使用Application.Match但是它返回type mismatch error:13错误。为什么呢?

Dim mySrs as Series
Dim ws as Worksheet
set ws Activesheet
For Each mySrs in ActiveChart.SeriesCollection
tempvar = mySrs.Name
y = Application.Match(tempvar, ws.Range("P37:P71"), 0)
MsgBox y

1 个答案:

答案 0 :(得分:17)

很可能没有找到匹配项。在这种情况下,Application.Match会返回Excel错误代码,即值为Error 2042的Variant / Error(这相当于在Excel中获取#N/A)。

这样的Error值不能被隐式强制转换为String(这是MsgBox期望的那个),因此你会得到类型不匹配。

请注意,可以使用Match调用相同的WorksheetFunction.Match函数。唯一的区别是如何处理错误:

  • 使用WorksheetFunction,错误被视为VBA错误,可使用On Error语法进行捕获。

  • 使用Application,它们会返回包含在Variant中的Excel错误代码。您可以使用IsError查看返回的变量是否为错误类型变体。