无效的过程调用excel vba内置函数

时间:2012-03-13 12:51:16

标签: vba excel-vba excel

dataSheet.range.value中找到的数据值为空时,以下代码抛出异常运行时错误5:无效的过程调用

temp = Right(Trim(dataSheet.range("A" & i).value), Len(Trim(dataSheet.range("A" & i).value)) - 1)

所以我用它来解决它:

If dataSheet.range("A" & i).value <> "" Then
        temp = Right(Trim(dataSheet.range("A" & i).value), Len(Trim(dataSheet.range("A" & i).value)) - 1)
    Else
        Exit For
    End If

我的问题是添加if语句是否有效修复?似乎更大的东西可能正在逃避我的掌握......就像不应该在String为NULL时只返回Right()函数?

1 个答案:

答案 0 :(得分:3)

空单元格不为空。

问题在于您的公式:如果单元格为空或仅包含空格,则Len(Trim(dataSheet.range("A" & i).value))为0且Len(Trim(dataSheet.range("A" & i).value)) - 1-1。当您运行Right(someString, -1)时,您会收到错误。

你应该这样做(它还会处理只包含空格的单元格):

If Len(Trim(dataSheet.range("A" & i).value)) > 0 Then
    temp = Right(Trim(dataSheet.range("A" & i).value), Len(Trim(dataSheet.range("A" & i).value)) - 1)
Else
    ...
End If