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 实例可以干净地关闭。有关信息,请参阅此问答:Excel.Range 对象未处理,因此未关闭 Excel 进程