Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel - обработка сообщений об ошибке / 6 сообщений из 6, страница 1 из 1
23.08.2006, 12:54:35
    #33937266
Stagiere
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel - обработка сообщений об ошибке
Добрый день!

Ребят, у меня появляется сообщение об ошибке, когда я подключаюсь к базе данных, а там для определенных дат, например, нет данных. Ну, соответственно все формулы летят. Но не в этом дело.
Хотелось бы просто предупредить пользователя о том, чтобы он поменял даты, вместо тех, что выползают по умолчанию(и тем более дают доступ к макросам)

Сообщения, которые у меня выпадают:
Сначала "Run-Time error 13",
a потом: "Your formula contains an invalid external reference to a worksheet. Verify that tha path, workbook, and rang name or cell reference are correct, and try again."

Попробовала:
Код: plaintext
1.
2.
3.
4.
5.
On Error Resume Next
MyFunctionWithProblems
If Err.Number <>  13  Then
     MsgBox ("Change the dates")
End If

Первое сообщение так убралось. А вот как узнать номер второго? Или это уже обработка ошибки? Вот, как бы так узнать как ее убрать.

А, и еще один глупый вопросик.
On Error Resume Next
Какое точно у нее назначение? Куда ее лучше ставить, перед, после функции, в которой может появиться ошибка или вообще она не обязательна?

Спасибо заранее за ответы
...
Рейтинг: 0 / 0
23.08.2006, 14:36:50
    #33937664
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel - обработка сообщений об ошибке
On Error Resume Next подавляет отображение стандартного сообщения об ошибке и выполняет следующую строку программы. Применяется в случае, если мы хотим игнорировать ошибки или мы знаем, какая ошибка может произойти, и хотим обработать ее без написания полного обработчика. Обычно ставится в начале процедуре, но лучше стараться избегать его применения.

Можешь так сделать.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Sub Errors()
    Dim intI As Integer
    
    On Error Resume Next

    intI =  10  /  0 
    
    If Err.Number =  11  Then
        MsgBox "Деления на ноль."
    End If
    
    On Error GoTo  0 
    
    intI =  66000 
End Sub

Но лучше написать полный обработчик.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Sub Errors()
    Dim intI As Integer
    
    On Error GoTo HandleErr

    intI =  10  /  0 
    
    intI =  66000 
    
ExitHere:
    Exit Sub
    
HandleErr:
    Select Case Err.Number
        Case  11 
            MsgBox "Деления на ноль."
            Resume Next
        Case Else
            MsgBox Err.Number & " " & Err.Description
            Resume ExitHere
    End Select
End Sub
...
Рейтинг: 0 / 0
23.08.2006, 15:29:39
    #33937938
Stagiere
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel - обработка сообщений об ошибке
То есть одной строчки об обработке ошибки в начале процедуры хватает на всю процедуру, где бы в ней эта ошибка ни произошла??

А вообще, спасибо огромное за ответ :)
...
Рейтинг: 0 / 0
23.08.2006, 16:06:11
    #33938097
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel - обработка сообщений об ошибке
StagiereТо есть одной строчки об обработке ошибки в начале процедуры хватает на всю процедуру, где бы в ней эта ошибка ни произошла??
В общем-то, да.
...
Рейтинг: 0 / 0
23.08.2006, 16:58:02
    #33938344
Stagiere
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel - обработка сообщений об ошибке
А как можно узнать "фамилию" сообщения? А то что бы ни делала, после моих обработок все равно выскакивает сообщение:
"Your formula contains an invalid external reference to a worksheet. Verify that tha path, workbook, and rang name or cell reference are correct, and try again."

Как бы мне его так "выловить" и отключить?
...
Рейтинг: 0 / 0
24.08.2006, 11:00:29
    #33939445
falet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel - обработка сообщений об ошибке
Есть глобальный рбъект Err c кучей свойств, в том числе и номером и описанием ошибки
напр. в обработчике
Код: plaintext
1.
2.
3.
4.
5.
error:
If Err.Number =  2004  Then
 'обработка конкретного номера ошибки
Else
 xlaErrMsgBox Err.Number, Err.Description, Err.Source, "Ошибка расчета функции"
End If
также обработав ошибку можно послать ее дальше(выше) с помощью
Код: plaintext
 Err.Raise Number, Source, Description
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel - обработка сообщений об ошибке / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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