我正在尝试使用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
答案 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
查看返回的变量是否为错误类型变体。