2014-01-23 52 views
1

我想对某些数据执行一些操作,但它们不工作,我需要找到一种方法来忽略那些不符合所有要求的单元。处理错误

基本上,我有一个列,其中一些单元格在其内容中具有文本+数字,而其他单元格只有文本。我在里面搜索了所有内容,并将TEXT分为一列,另一列分为NUMBER。然后,我运行一个宏来为其他列中的每个文本找到匹配的文本。

但是,当我尝试从NUMBERS分离文本时,我搜索第一个“(”,导致我的数字格式为(10.10.10),但是如果找不到,则单元格值出现:#VALUE!( OK,预计造成的字符未找到),这是问题所在:!如果我跑我的宏在”#VALUE它crashs和鸵鸟政策完成其执行

我曾尝试使用

On Error GoTo

在我的宏代码

,但由于某些原因,它doesn't无法处理。“运行时错误:类型不匹配”

For contadorOr = 2 To colO 
    For contadorDes = 2 To colA 
     On Error GoTo cont 
     If InStr(1, Cells(contadorDes, colunaDestino).Value, Cells(contadorOr, colunaOrigem).Value) Then 
      If InStr(1, Cells(contadorOr, colunaOrigem + 4).Value, Cells(contadorDes, colunaDestino + 1).Value) Then 
       Cells(contadorOr, colunaOrigem + 5).Value = "Mesma versão" 
      End If 

      Exit For 
     End If 
    Next contadorDes 
cont: Next contadorOr 

有什么建议吗?我可以考虑忽略这个错误(当它发生时,我的变量contadorOr会增加并且不会有下一个值),或者避免#VALUE的任何方法!由我的职能返回,但没有成功做到这一点。 在此先感谢。

+0

您使用的是什么版本的Excel? – user3056839

+0

该错误在哪一行发生? –

+0

Excel 2010.此错误发生在这里:如果InStr(1,Cells(contadorDes,colunaDestino).Value,Cells(contadorOr,colunaOrigem).Value)然后 – fhbeltrami

回答

2

而不是使用错误处理选项,你可以检查你要检查/处理的单元是否不返回错误。这很简单,如下所示:

If IsError(Cells(contadorDes, colunaDestino).Value) Then 
     'to do anything if there is error 
     'usually...do nothing 
Else 
     'do what you want if there is no error 
End if 
+0

伟大的答案男人!现在它完美的=) – fhbeltrami

+0

不客气! –