如何修复Excel VBA中的运行时错误“13”?

时间:2015-07-23 20:00:23

标签: excel vba

我有一个巨大的Excel VBA文件(xlsm)。它曾经能够毫无问题地运行它。现在我的同事运行它没有任何问题。但是,当我运行它时,它会保持 给我这个“运行时错误'13'”。我刚刚安装了一个名为的补丁: 我的Windows 7,64bit机器上的“excel2010-kb2956142-fullfile-x64-glb”。

以下是代码snipet:

iPos2 = 0
On Error Resume Next
iPos2 = Application.Match(sComponent, sBsLvlShort(), 0)
On Error GoTo 0

调试在以下行停止: Application.Match 还有什么可以做的?我知道Excel没有问题。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

当代码"中断"。

时进入调试模式

然后,在VBE"立即"窗格,输入以下语句并按返回键:

?TypeName(iPos2)

告诉我它在下一行打印的内容。然后在立即窗格中,输入此语句并按返回键:

?Application.Match(sComponent, sBsLvlShort(), 0)

然后,告诉我下一行打印的内容。

数组中存储的内容是否导致与iPos2变量关联的数据类型不匹配。

另一种可能性是您无意中启用了VBE中的选项以“打破所有错误"”。在VBE中检查工具|选项|一般并确保"打破未处理的错误"选项已选中。否则,即使On Error Resume Next语句中包含的错误也会引发(如果在数组中找不到值,Application.Match函数将返回错误类型。)

否则这个数组实际上是什么?您是否使用“本地”窗格验证了此内容? (如果您不知道如何执行此操作,Google将非常有用!)

如果它不包含您希望包含的内容,那么您需要向后工作并找到分配给此变量的代码行,并从那里进行调试。此时,似乎可能是用户错误(即,您为程序提供了错误的输入,在这种情况下通常会出现错误)。