Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не отрабатывается run-time error / 5 сообщений из 5, страница 1 из 1
21.06.2010, 15:26
    #36698554
Не отрабатывается run-time error
В надежде обойти ошибку выборки данных, когда фильтр не выдаёт никаких значений, пишу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Selection.AutoFilter Field:=Range(Y_column & "1").Column, Criteria1:=">" &  _
              Replace(CStr(Down_boundary), ",", "."), Operator:=xlAnd, Criteria2:="<=" &  _
              Replace(CStr(Truncate_values_by), ",", "."), VisibleDropDown:=False

On Error GoTo Skip
 Set X_values = Range(X_column & "2:" & X_column & ActiveSheet.AutoFilter.Range.Row + _
    ActiveSheet.AutoFilter.Range.EntireRow.Count -  1 ).SpecialCells(xlCellTypeVisible, xlNumbers)
...
Skip:
Но перехода на метку Skip Не происходит!
Почему?
...
Рейтинг: 0 / 0
21.06.2010, 20:18
    #36699238
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отрабатывается run-time error
Дмитрий-(сколько-же-нас?),

перенесите on error до Selection.Autofilter.
...
Рейтинг: 0 / 0
22.06.2010, 10:09
    #36699771
Не отрабатывается run-time error
big-dukeДмитрий-(сколько-же-нас?),

перенесите on error до Selection.Autofilter.
Пробовал -- не помогло :(
Написал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
On Error GoTo Error_label

Selection.AutoFilter Field:=Range(Y_column & "1").Column, _
            Criteria1:=">" & Replace(CStr(Down_boundary), ",", "."), _
            Operator:=xlAnd, _
            Criteria2:="<=" & Replace(CStr(Truncate_values_by), ",", "."), VisibleDropDown:=False

  Set X_values = Range(X_column & "2:" & X_column & ActiveSheet.AutoFilter.Range.Row + _
                 ActiveSheet.AutoFilter.Range.EntireRow.Count -  1 ).SpecialCells(xlCellTypeVisible, xlNumbers)

  Set Y_values = Range(Y_column & "2:" & Y_column & ActiveSheet.AutoFilter.Range.Row + _
                 ActiveSheet.AutoFilter.Range.EntireRow.Count -  1 ).SpecialCells(xlCellTypeVisible, xlNumbers)

If X_values.Count >  0  Then
  Call Normalize_left_over(X_values, Y_values, Escape_peak, Koef_01, Koef_02)
End If

Skip_label:
...
Error_label:
    Resume Next
Уходит на Error_label и, соответствено, возвращается на следующую команду, куда мне совсем не надо.
Если пишу:
Код: plaintext
1.
2.
Error_label:
    GoTo Skip_label
Первую пустую выборку отрабатывает, вторую -- нет.
Что-то никак не въеду, в чём закавыка...
...
Рейтинг: 0 / 0
22.06.2010, 20:48
    #36701685
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отрабатывается run-time error
Уходит на Error_label и, соответствено, возвращается на следующую команду, куда мне совсем не надо.

Три варианта использования оператора Resume в коде обработки ошибок:

Resume - приводит к повторному выполнению строки, ставшей причиной ошибки (используется, если код обработки ошибок исправляет ситуацию)

Resume Next - передает выполнение строке, следующей за строкой, содержащей ошибку

Resume ALabel - передает выполнение кода на строку с меткой ALabel

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


Код: plaintext
1.
2.
3.
Skip_label:
...
Error_label:
    GoTo Skip_label
А эта конструкция вообще непонятно для чего. Можно ведь сразу перейти на Skip_label ?
И как завершить эту процедуру?
...
Рейтинг: 0 / 0
23.06.2010, 09:58
    #36702297
Не отрабатывается run-time error
О, спасибо!!!
Я, почему-то, предполагал, что GoTo и Resume в переходе по меткам идентичны.
Код: plaintext
Resume Skip_label
даёт нужный эффект :)
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не отрабатывается run-time error / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]