Если NOT ActiveSheet.Range () Is Nothing, происходит ошибка, когда он ничего не находит - PullRequest
1 голос
/ 01 апреля 2019

У меня есть саб, который читает текстовый файл и импортирует данные в ячейку с заданным именем.В текстовом файле есть некоторые данные, которые мне не нужны, поэтому, если подпрограмма не может найти подходящую ячейку, она просто игнорирует ее.

Но когда функция находит определенное имя, которого не существует, она выдает ошибку 1004.Помещение On Error Resume Next после Do While Not устраняет проблему, но это скорее решение для бинтов.

Вот функция, которая выдает ошибку:

If Not ActiveSheet.Range(cellName) Is Nothing Then
    Set TxtRng = ActiveSheet.Range(cellName)

    If TxtRng = ActiveSheet.Range(cellName) Then
        TxtRng.Value = getPrice
    End If
End If

Iтакже пробовал эту версию функции, и она по-прежнему вызывает ошибку 1004:

If ActiveSheet.Range(cellName) Is Nothing Then
    ''Do Nothing here
Else
    Set TxtRng = ActiveSheet.Range(cellName)

    If TxtRng = ActiveSheet.Range(cellName) Then
        TxtRng.Value = getPrice
    End If
End If

1 Ответ

3 голосов
/ 01 апреля 2019

Вы должны использовать обработку ошибок, потому что попытка использовать несуществующее имя диапазона приводит к ошибке.

Dim TxtRng As Range

Set TxtRng = Nothing 'if you use this code in a loop make sure you initialize it as nothing within your loop. Otherwise you can omit this line.

On Error Resume Next
Set TxtRng = ActiveSheet.Range(cellName)
On Error Goto 0 're-activate error reporting

If Not TxtRng Is Nothing Then
    'your code
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...