调试application.match

时间:2017-05-15 10:37:55

标签: excel-vba vba excel

我正在审核长期有效的代码。

循环内的以下代码行给出了一个错误。 (即匹配在该范围内没有找到任何命中):

Application.Match(.Cells(lngRowCnt, 1).Value, wkbExternalExcel2.Worksheets(strSQOrderProcCurrentWks).columns("H"), 0)

但我正在寻找的价值存在。

要进行故障排除,请在即时窗口中运行以下命令:

print Application.CountIf(wkbExternalExcel2.Worksheets(strSQOrderProcCurrentWks).columns("H"), .Cells(lngRowCnt, 1).Value)
 1
print application.Match(.Cells(lngRowCnt, 1).Value, wkbExternalExcel2.Worksheets(strSQOrderProcCurrentWks).columns("H"), 0)
Error 2042

这证明数据存在且Match应返回行号。我怎样才能进一步解决这个问题,找出匹配失败的原因?

修改 问题不是来自循环中的一个特定值,因为它在每次迭代时失败(在我的审核之前它按预期工作,并且审核不会影响寻找匹配的源数据。

我实现了以下解决方法,但它很丑陋且效率低下,所以我真的想弄清楚为什么Match停止工作。

vntVLookUpResult1 = CVErr(xlErrNA)
If Not wkbExternalExcel2.Worksheets(strSQOrderProcCurrentWks).Columns("H").Find(.Cells(lngRowCnt, 1).Value, , xlValues, xlWhole) Is Nothing Then vntVLookUpResult1 = wkbExternalExcel2.Worksheets(strSQOrderProcCurrentWks).Columns("H").Find(.Cells(lngRowCnt, 1).Value, , xlValues, xlWhole).Row

0 个答案:

没有答案