2012-12-23 59 views
0

这是我从好奇心问起,我有一个循环滚动列以匹配ID,现在经过一些迭代后,脚本因错误消息而关闭:“比赛未找到”突出显示正在搜索的列上的单元格

ParentMatchRowNum=objExcel1.Application.WorksheetFunction.Match(ParentID, ob3.Columns(1), 0) 

,所以我在寻找一个任何种类的亮点色彩,以其目前的ID搜索,只是想指出这是不被剧本中的ID。突出显示将需要在当前通过搜索的ID上。

错误

Error

感谢

+0

因此,如果在该列中找到ob3Columns(1),您想突出显示“parentid”的单元格吗?如果答案是肯定的,那是不合逻辑的....:$ coz,这意味着你必须突出显示整个列......为什么不在列中找到它的时候,将父类ID跟踪到“字典”中? – bonCodigo

+0

@bonCodigo我不知道为什么会发生。因为匹配函数搜索的ID存在于该列中,所以我只是通过调试发现的。仍然为什么比赛投掷错误?对比赛功能有没有限制? –

回答

1

尝试Application.Match,而不是Application.WorksheetFunction.Match

If not IsError(objExcel1.Application.Match(ParentID, ob3.Columns(1), 0)) Then  
    ParentMatchRowNum = objExcel1.Application.Match(ParentID, ob3.Columns(1), 0) 
Else 
    '-- do something 
End if 

这里是一个小的信息,一个MVP已经共享: Application.Match之差()与Application.WorkSheetFunction.Match()

不同之处在于它的错误处理。在XL97中,匹配的WorksheetFunction表单出现问题,但没有与Application.Match一起显示。 Myrna Larson报告说她在更高版本中遇到过这个问题。出于这个原因,一般认为 安全而不是遗憾,并使用Application.Match

: - Reference

另外一件事是,只要知道在列中只有整数或混合数据类型时不应搜索字符串。保持一致。因此对于例如寻找integers within integersStrings within Strings ..这意味着你可能应该将你所有的alphanumeric ID参考转换为CStr(ID)。 (变体在运行时解释,所以它不能解决问题。)

+0

你是我的**上帝**说实话!你是我的'救星':-)但是真的一旦我的脚本结束意味着所有的需求都将被转换为'CODE'然后,我将开始在脚本中的错误处理机构! –

+0

我得到错误,'IsError'变量没有从该part.please帮助定义! –

+0

@TukaiRakshit你可以发布错误吗? – bonCodigo

相关问题