2012-03-13 47 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