HRESULT表示Object Required
。因此,似乎您嘗試操作的一個或多個對象不存在,但由於此時編寫了代碼,因此很難確定它是什麼。但即時的問題是,你正在比較值爲Nothing
,在VB.Net你應該使用Is Nothing
來檢查。此外,您已經將For
循環設置爲從1到1000,步長爲1(因爲它是默認值,所以您不需要包括這個循環),但是您正在執行i = i + 1
這看起來像是一個錯誤?
所以固定這一點,分裂它成它的部分它可能給你一個更好的主意,有什麼不工作:
For i = 1 To 1000
Dim aRange As Object = cPart.Range("A" & i)
If aRange IsNot Nothing AndAlso aRange.Value IsNot Nothing Then
Dim lRange As Object = cPart.Range("L" & i)
If lRange IsNot Nothing AndAlso lRange.Value Is Nothing Then
Dim interior As Object = lRange.Interior
If interior IsNot Nothing Then
interior.ColorIndex = 3
End If
End If
End If
Next
我已經聲明瞭新的對象爲Object
可能需要改變的正確的數據類型(取決於您的項目設置)。
希望你現在應該能夠通過代碼沒有錯誤運行,你也應該能夠當單步執行代碼,並發現新的對象(aRange
,lRange
和interior
)之一Nothing
在某些時候不應該是這會告訴你爲什麼之前拋出這個錯誤。
像這樣分離代碼的另一個好處是,您現在可以正確處置Excel對象,以便Excel實例可以乾淨地關閉。有關信息,請參閱此Q & A:Excel.Range object not disposing so not Closing the Excel process
謝謝! 我比較沒有任何東西在我的代碼幾乎無處不在,並沒有產生錯誤。這就是爲什麼我被困在這一個。對於For循環來說,你是對的,它是默認的,但我只是想強制它,它不會影響代碼。 我繞過這個,通過向另一個for循環添加內部if語句,並且它完美地工作。 感謝解釋它真的幫助! –
@ l3_08你能展示你用來解決它的代碼嗎?會很有趣。也許把它放在一個答案。 – PandaWood