При обработке ошибок ошибка времени выполнения не работает - PullRequest
2 голосов
/ 12 апреля 2011

Я не уверен, почему On Error goto не обрабатывает следующую ошибку.
У меня есть веб-запрос, настроенный в ячейке T10, который я выбираю и изменяю в URL и пытаюсь вставить таблицу в лист. Я делаю это 20-30 раз с разными URL.
Иногда получение данных занимает слишком много времени или происходит что-то еще, что не позволяет Excel получить данные ...
В этих случаях я хочу обработать ошибку и продолжить.
Но я все еще получаю ошибку времени выполнения '1004', и отладочные сообщения .Refresh BackgroundQuery:=False подсвечиваются.

Но не должен ли On Error захватить это и перейти к строке CardDataPullError дальше внизу листа?
Я могу вызвать эту проблему, изменив IP-адрес на другой, не являющийся моей целью.

On Error GoTo CardDataPullError

    NodeIP = "192.168.210.4"

    Range("T10").Select
    With Selection.QueryTable
        .Connection = "URL;http://" & NodeIP & ":21495/" & Card & "/ispCktDBPage" 
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "3"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With

On Error GoTo 0

'below is another section of code that highlights the cell red 
'showing it had a problem pulling the data

GoTo SkipCard ' To skip error handler

CardDataPullError:
X = X
Cells(CardRow, CardCol).Interior.ColorIndex = 3 ' Red

SkipCard:
'other reasons to skip to

1 Ответ

4 голосов
/ 17 апреля 2011

Вы забыли поставить resume в обработчике ошибок CardDataPullError.
Поэтому ошибка не обрабатывается.

Измените код следующим образом:

CardDataPullError:
  X = X
  Cells(CardRow, CardCol).Interior.ColorIndex = 3 ' Red
  Resume SkipCard:
...