【问题标题】:Application.Match gives type mismatchApplication.Match 给出类型不匹配
【发布时间】:2022-01-13 11:27:12
【问题描述】:

我正在尝试使用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

【问题讨论】:

标签: vba excel


【解决方案1】:

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

这样的错误值不能被隐式强制转换为字符串(这是MsgBox 所期望的),因此您会得到类型不匹配。

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

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

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

【讨论】:

  • 啊,那是我的问题!我一直在寻找“25%”,但工作表当然是 0.25 而不是字符串。谢谢
  • 非常感谢您的精彩解释,终于救了我
猜你喜欢
  • 2020-04-01
  • 2014-11-02
  • 1970-01-01
  • 2023-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多