我有一个巨大的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没有问题。
感谢您的帮助。
珍
答案 0 :(得分:1)
当代码"中断"。
时进入调试模式然后,在VBE"立即"窗格,输入以下语句并按返回键:
?TypeName(iPos2)
告诉我它在下一行打印的内容。然后在立即窗格中,输入此语句并按返回键:
?Application.Match(sComponent, sBsLvlShort(), 0)
然后,告诉我下一行打印的内容。
数组中存储的内容是否导致与iPos2
变量关联的数据类型不匹配。
另一种可能性是您无意中启用了VBE中的选项以“打破所有错误"”。在VBE中检查工具|选项|一般并确保"打破未处理的错误"选项已选中。否则,即使On Error Resume Next
语句中包含的错误也会引发(如果在数组中找不到值,Application.Match
函数将返回错误类型。)
否则这个数组实际上是什么?您是否使用“本地”窗格验证了此内容? (如果您不知道如何执行此操作,Google将非常有用!)
如果它不包含您希望包含的内容,那么您需要向后工作并找到分配给此变量的代码行,并从那里进行调试。此时,似乎可能是用户错误(即,您为程序提供了错误的输入,在这种情况下通常会出现错误)。