我正在审核长期有效的代码。
循环内的以下代码行给出了一个错误。 (即匹配在该范围内没有找到任何命中):
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