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

excel vba内置函数的过程调用无效,vba,excel,Vba,Excel,以下代码引发异常运行时错误5:当在dataSheet.range.value中找到的数据值为Null时,过程调用无效 temp=Right(微调(数据表范围(“A”&i).value)),Len(微调(数据表范围(“A”&i.value))-1) 所以我用这个来修正它: If dataSheet.range("A" & i).value <> "" Then temp = Right(Trim(dataSheet.range("A" & i).valu

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

temp=Right(微调(数据表范围(“A”&i).value)),Len(微调(数据表范围(“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
如果数据表.range(“A”&i).value”则
温度=右侧(微调(数据表范围(“A”&i).value)),Len(微调(数据表范围(“A”&i.value))-1)
其他的
退出
如果结束

我的问题是添加If语句是否是有效的修复?似乎有更大的事情正在发生,我无法理解……比如,当字符串为NULL时,Right()函数不应该什么都不返回吗

空单元格不为空

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

您应该这样做(它还负责只包含空格的单元格):


首先,您需要确保
数据表
实际上是
设置的。(也有助于将其作为
工作表
)谢谢@Gaffi页面外的内容已完成抱歉我没有说清楚。不用担心!我只是想确定一下。+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