Время выполнения COMException Unhandeled
Я работаю над приложением, которое пишет, чтобы преуспеть. Следующий фрагмент кода работает нормально (заполняет запрошенную ячейку), но генерирует исключение во время выполнения, от которого я не могу избавиться.
For i = 1 To 1000 Step 1
If Not (cPart.Range("A" & i).Value = Nothing) Then
If (cPart.Range("L" & i).Value = Nothing) Then
cPart.Range("L" & i).Interior.ColorIndex = 3
End If
i = i + 1
End If
Next
исключение: COMException было необработанным: исключение из HRESULT: 0x800A01A8
любая помощь?
1 ответ
Что значит 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