2012-03-13 22 views
1

下面的代码抛出异常运行时错误5:无效的过程调用当数据在dataSheet.range.value发现值为null无效过程调用一个Excel VBA内置函数

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 

我的问题是并补充说如果声明有效的解决?看起来像更大的事情可能正在逃避我的把握......就像Right()函数在String为NULL时不会返回任何内容一样?

+0

首先,你需要确保'dataSheet'实际上是'Set'的东西。 (这也有助于将'Dim'变成'Worksheet') – Gaffi 2012-03-13 12:59:26

+0

感谢@Gaffi那些东西已经完成了页面抱歉,我没有说清楚。 – franklin 2012-03-13 13:13:55

+0

不用担心!只是想我会确定。 – Gaffi 2012-03-13 13:14:55

回答

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 
+1

+1好答案;像代码检查字符串的长度而不是检查空白,空值或空字符串时的值本身。 – markblandford 2012-03-13 13:11:30

相关问题