处理错误

时间:2014-01-23 10:44:57

标签: excel vba error-handling

我正在尝试对某些数据执行某些操作,但它们无法正常工作,我需要找到一种方法来忽略那些不符合所有要求的单元格。

基本上,我有一个列,其中一些单元格的内容中包含文本+数字,而其他单元格只有文本。我在所有这些内部搜索并将TEXT分成一列,将NUMBER分成另一列。然后,我运行一个宏来查找其他列中每个匹配的文本。

但是当我尝试从NUMBERS分割TEXT时,我搜索第一个“(”,因为我的数字格式是(10.10.10),但是如果找不到,则显示单元格值:#VALUE!(ok) ,预计会导致找不到该字符。问题是:如果我将宏运行在“#VALUE!它崩溃并且没有完成执行。

我尝试过使用

  

On Error GoTo

在我的宏代码中,但由于某种原因,它无法处理“运行时错误:类型不匹配”。

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!由我的职能部门返回,但没有成功做到这一点。 提前谢谢。

1 个答案:

答案 0 :(得分: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