【问题标题】:vba vlookup/error handling - type mismatch errorvba vlookup/错误处理 - 类型不匹配错误
【发布时间】:2013-09-18 15:25:18
【问题描述】:

我收到了run time error 13 - type mismatch error

有什么想法吗?

outputCell = "=IF(ISNA(VLOOKUP(A" & row & ",'Current Defects'!$A$" & 2 & ":$B$" & 1000 & ",2,FALSE))," - ", (=VLOOKUP(A" & row & ",'Current Defects'!$A$" & 2 & ":$B$" & 1000 & ",2,FALSE))"

【问题讨论】:

  • 如果您提供最少量的代码以便其他人复制错误,这会有所帮助。你的变量是如何标注的? row 在运行时的值是多少?你能展示更多你的代码吗?

标签: vba error-handling vlookup


【解决方案1】:

去掉第二个VLOOKUP之前的(=

您也没有正确转义 IsNA 函数中的双引号。

在一行中,尝试:

outputCell = "=IF(ISNA(VLOOKUP(A" & row & ",'Current Defects'!$A$" & 2 & ":$B$" & 1000 & ",2,FALSE)),"" - "", VLOOKUP(A" & row & ",'Current Defects'!$A$" & 2 & ":$B$" & 1000 & ",2,FALSE))"

为了便于阅读,将其拆分为多行:

outputCell = "=IF(ISNA(VLOOKUP(A" _
                  & row & ",'Current Defects'!$A$" & 2 & ":$B$" & 1000 & ",2,FALSE))," _
                  & """ - "", VLOOKUP(A" & row & ",'Current Defects'!$A$" & 2 & ":$B$" _
                  & 1000 & ",2,FALSE))"

【讨论】:

  • 谢谢大卫。我会展示更多代码,但变量名称对组织相当敏感。非常感谢您的帮助。
  • 不客气!如果这解决了问题,请考虑将此答案标记为“已接受”:)
  • 非常感谢。接受
【解决方案2】:

在 VBA 中的字符串中,您需要通过将双引号加倍来转义双引号。 所以如果你想要一个包含Hello "bob" how are you?的字符串,你会写"Hello ""bob"" how are you?"

在您的代码中:

"=IF(ISNA(VLOOKUP(A" & row & ",'Current Defects'!$A$" & 2 & ":$B$" & 1000 & ",2,FALSE))," - ", (=VLOOKUP(A" & row & ",'Current Defects'!$A$" & 2 & ":$B$" & 1000 & ",2,FALSE))"

由于," - ", 部分,它变得混乱。您正在尝试减去字符串,这是无法完成的。

此外,您的公式没有意义。我建议先在 Excel 单元格中对其进行测试,然后仔细修改它,在 VBA 中插入变量...

【讨论】:

  • 谢谢。我之前在excel中测试过这个功能,它工作得很好。一旦我在 vba 中添加了错误处理功能,我就收到了错误,我认为这是一个错误的引用,因为你提到它没有正确结束。
猜你喜欢
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 2017-08-28
  • 1970-01-01
  • 2015-02-18
相关资源
最近更新 更多